2012-02-11 220 views
0

我正在使用long构造java.sql.Timestamp。有时候它会在其他时候出现错误!例如将时间戳长转换为时间戳错误

76875给出的时间戳 “1970-01-01 01:01:16.875”

凡来了额外的时间的呢?问题出现,然后消失的自行捐赠:

“1970-01-01 00:01:16.875”。

的代码导致在谷歌AppEngine上运行的问题位,可以把它搞乱的东西了时区?我试图找出一个模式,但尚未管理。

回答

0

数据库是否与您的应用程序在同一台服务器上运行?时区差异似乎最有可能。

这里有几个变量。尝试确定问题出在哪里是来自:

  1. 构造一个Date对象与长时间戳值 - 是你期待什么?
  2. 确定App引擎服务器位于哪个时区。可能是新的TimeZone()。getDisplayName()
  3. 尝试使用java.sql.Date - 它的行为方式是否相同?

您可能需要为这些不同的日期对象创建一个表。尝试不同的长整型值,并为每个值创建一行java.util.Date,java.sql.Date,java.sql.Timestamp。

0

刷新内存Timestamp构造函数:自1970年1月1日00:00:00 GMT以来的时间 - 毫秒。请注意,这是GMT

所以没有错 “1970-01-01 01:01:16.875”,我想你在欧洲时区(+1)现在:)

尝试new java.sql.Timestamp(76875).toGMTString()的时候,你将获得“1月1日1970 00:01:16 GMT“。

您也可以先致电TimeZone.setDefault(TimeZone.getTimeZone("GMT+0:00"));,然后您的时间戳将为“1970-01-01 00:01:16.875”。