Isso foi mais fácil do que esperávamos.
Primeiro, em
application.conf
, configure o URL JDBC com os parâmetros conforme descrito em outra pergunta do 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"
Segundo, em
Build.scala
, defina a propriedade do sistema Java e o padrão:// 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"))
Essas duas alterações juntas lidarão com teste (
play test
) e desenvolvimento (play start
) modos. Para produção (
play dist
), ainda é preciso definir a propriedade antes do lançamento. Por exemplo, por:- Editando o
start
gerado script para adicionarexport _JAVA_OPTIONS=-Duser.timezone=GMT
- Invocando o
start
script com-Duser.timezone=GMT
- Iniciando em uma JVM existente após chamar
System.setProperty("user.timezone", "GMT")