Това беше по-лесно, отколкото очаквахме.
Първо, в application.conf
, конфигурирайте URL адреса на JDBC с параметрите както е описано в друг въпрос на 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"
Второ, в Build.scala
, задайте системното свойство на Java и по подразбиране:
// 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"))
Тези две промени заедно ще се справят и с двата теста (play test
) иразработване (play start
) режими.
Запроизводство (play dist
), все пак трябва да зададете свойството преди стартиране. Например от:
- Редактиране на генерирания
start
скрипт за добавяне наexport _JAVA_OPTIONS=-Duser.timezone=GMT
- Извикване на
start
скрипт с-Duser.timezone=GMT
- Стартиране в рамките на съществуващ JVM след извикване на
System.setProperty("user.timezone", "GMT")