一些背景:
我在Tomcat 7上运行了一个Java 1.6 webapp.数据库是MySQL 5.5.以前,我使用Mysql JDBC驱动程序5.1.23连接到数据库.一切正常.我最近升级到Mysql JDBC驱动程序5.1.33.升级后,Tomcat会在启动应用程序时抛出此错误.
WARNING: Unexpected exception resolving reference
java.sql.SQLException: The server timezone value 'UTC' is unrecognized or represents more than one timezone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc timezone value if you want to utilize timezone support.
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
在一台服务器上,当我运行时:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
在另一台服务器上
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud) 从服务器我得到这种格式的datetime变量:6/29/2011 4:52:48 PM它是UTC时间.我想使用JavaScript将其转换为当前用户的浏览器时间.
如何使用JavaScript或jQuery完成此操作?
我正在寻找一个功能,将日期在一个时区转换为另一个时区.
它需要两个参数,
时区字符串在http://en.wikipedia.org/wiki/Zone.tab中描述
是否有捷径可寻?
我试图从值中减去一个日期值datetime.today()来计算多久以前的东西.但它抱怨说:
TypeError: can't subtract offset-naive and offset-aware datetimes
Run Code Online (Sandbox Code Playgroud)
该值datetime.today()似乎不是"时区感知",而我的其他日期值是.如何获得值datetime.today()是时区的?现在它给我时间在当地时间,恰好是PST,即UTC-8hrs.最坏的情况是,有没有办法我可以手动输入时区值到datetime返回的对象datetime.today()并将其设置为UTC-8?当然,理想的解决方案是让它自动知道时区.
我timestamptz在PostgreSQL中有一个时区感知字段.当我从表中提取数据时,我想立即减去时间,以便我可以得到它的年龄.
我遇到的问题是,无论是datetime.datetime.now()和datetime.datetime.utcnow()似乎回到时区不知道时间戳,这导致我得到这个错误:
TypeError: can't subtract offset-naive and offset-aware datetimes
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这种情况(最好不使用第三方模块).
编辑:感谢您的建议,但是尝试调整时区似乎给了我错误..所以我只是在PG中使用时区不知道的时间戳并始终使用:
NOW() AT TIME ZONE 'UTC'
Run Code Online (Sandbox Code Playgroud)
这样我的所有时间戳都默认为UTC(尽管这样做更烦人).
有人可以指出我所期望的id所引用的所有时区的完整列表TimeZoneInfo.FindTimeZoneById()吗?我无法在任何地方找到列表,我查看了.NET文档.
我已经解析了java.util.Datea,String但是它将本地时区设置为date对象的时区.
时区没有指定String从中Date解析.我想设置date对象的特定时区.
我怎样才能做到这一点?
谁知道MySQL中是否有这样的功能?
UPDATE
这不会输出任何有效信息:
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)
或者也许MySQL本身无法准确知道所time_zone使用的,那很好,我们可以参与PHP这里,只要我能得到有效的信息不喜欢SYSTEM......
timezone ×10
datetime ×3
mysql ×3
date ×2
java ×2
javascript ×2
python ×2
c# ×1
geolocation ×1
jdbc ×1
jquery ×1
list ×1
postgresql ×1
tomcat ×1
utc ×1