Bylo to jednodušší, než jsme čekali.
Nejprve v application.conf
, nakonfigurujte adresu URL JDBC s parametry jak je popsáno u jiné otázky StackOverflow
:
# Set MySQL Connector/J to use UTC server connection and time conversions
# see https://stackoverflow.com/questions/10488529/gettimestamp-does-timezone-converstion-twice-in-mysql-jdbc-connector
db.default.url="jdbc:mysql://localhost/database?useGmtMillisForDatetimes=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&useTimezone=true&serverTimezone=UTC"
Za druhé, v Build.scala
, nastavte vlastnost systému Java a výchozí:
// Setting this property here forces the JVM to run in UTC time,
// both for test (`play test`) and development (`play start`) modes,
// but not for production (`play dist`).
System.setProperty("user.timezone", "GMT")
TimeZone.setDefault(TimeZone.getTimeZone("GMT"))
Tyto dvě změny společně zvládnou oba test (play test
) a vývoj (play start
) režimy.
Pro výrobu (play dist
), před spuštěním je stále nutné nastavit vlastnost. Například podle:
- Úprava vygenerovaného
start
skript pro přidáníexport _JAVA_OPTIONS=-Duser.timezone=GMT
- Vyvolání
start
skript s-Duser.timezone=GMT
- Spuštění v rámci existujícího JVM po volání
System.setProperty("user.timezone", "GMT")