Ini lebih mudah dari yang kami duga.
Pertama, di application.conf
, konfigurasikan URL JDBC dengan parameter seperti yang dijelaskan pada pertanyaan StackOverflow lainnya
:
# 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"
Kedua, di Build.scala
, atur properti sistem Java dan default:
// 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"))
Kedua perubahan ini bersama-sama akan menangani pengujian (play test
) dan pengembangan (play start
) mode.
Untuk produksi (play dist
), seseorang masih harus mengatur properti sebelum diluncurkan. Misalnya, oleh:
- Mengedit
start
. yang dihasilkan skrip untuk menambahkanexport _JAVA_OPTIONS=-Duser.timezone=GMT
- Memanggil
start
skrip dengan-Duser.timezone=GMT
- Meluncurkan dalam JVM yang ada setelah memanggil
System.setProperty("user.timezone", "GMT")