Det var nemmere, end vi havde forventet.
Først i application.conf
, konfigurer JDBC URL'en med parametrene som beskrevet i et andet StackOverflow-spørgsmål
:
# 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"
For det andet i Build.scala
, indstil Java-systemegenskaben og standarden:
// 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"))
Disse to ændringer vil sammen håndtere begge test (play test
) og udvikling (play start
) tilstande.
Til produktion (play dist
), skal man stadig indstille egenskaben før lancering. For eksempel af:
- Redigering af den genererede
start
script for at tilføjeexport _JAVA_OPTIONS=-Duser.timezone=GMT
- Ankaldelse af
start
script med-Duser.timezone=GMT
- Lancering i en eksisterende JVM efter opkald til
System.setProperty("user.timezone", "GMT")