Dit was makkelijker dan we hadden verwacht.
Eerst in application.conf
, configureer de JDBC-URL met de parameters zoals beschreven op een andere StackOverflow-vraag
:
# 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"
Ten tweede, in Build.scala
, stel de Java-systeemeigenschap en de standaardwaarde in:
// 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"))
Deze twee wijzigingen samen verwerken beide test (play test
) en ontwikkeling (play start
) modi.
Voor productie (play dist
), moet men de eigenschap nog steeds instellen voor de lancering. Bijvoorbeeld door:
- De gegenereerde
start
bewerken script omexport _JAVA_OPTIONS=-Duser.timezone=GMT
toe te voegen - De
start
oproepen script met-Duser.timezone=GMT
- Lancering binnen een bestaande JVM na het aanroepen van
System.setProperty("user.timezone", "GMT")