标签:mysql timezone playframework-2-0
我们希望我们的Play Framework 2.0 Scala应用程序能够在应用程序服务器和MySQL数据库服务器中处理UTC中的所有日期和时间信息.
诀窍是:
>不改变部署环境
>不改变CI(测试)环境
>不改变本地(dev)环境
这样做有标准的最佳做法吗?我们希望测试以UTC格式运行,而不必在所有命令行上传递-Duser.timezone = GMT.同样用于启动具有播放开始的服务器.
解决方法:
这比我们预期的要容易.
首先,在application.conf中,使用参数as described on another StackOverflow question配置JDBC URL:
# 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 dist),必须在发布之前设置属性.例如,通过:
>编辑生成的启动脚本以添加导出_JAVA_OPTIONS = -Duser.timezone = GMT
>使用-Duser.timezone = GMT调用启动脚本
>调用System.setProperty(“user.timezone”,“GMT”)后在现有JVM中启动
标签:mysql,timezone,playframework-2-0 来源: https://codeday.me/bug/20190729/1568216.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。