5

我在安卓手机(Nexus one)和java服务器之间的时间转换上遇到了一点麻烦。我读过的所有内容都说它们是相同的,但是当我从我转换一个很长的时间戳时,我似乎失去了 1 小时(完全正确)。

具体来说,如果我在 android 设备上运行以下代码,我会得到以下输出

代码:

Calendar g = Calendar.getInstance();
g.setTimeInMillis(1340661899000L);
Log.d(TAG, g.getTime().toLocaleString());

输出:2012 年 6 月 25 日下午 6:04:59

我认为这是正确的,但是当我在 java 服务器上运行完全相同的代码时,我在同一天但提前 1 小时得到了

代码:

Calendar g = Calendar.getInstance();
g.setTimeInMillis(1340661899000L);
System.out.println(g.getTime().toLocaleString());

输出:2012 年 6 月 25 日下午 5:04:59

有谁知道这可能是什么原因造成的?服务器和手机都位于同一个地方(没关系),服务器盒和手机上的时钟匹配

4

2 回答 2

4

考虑到相差一小时,您是否可以在服务器上设置 DST(夏令时)而不是在电话上设置,反之亦然?

于 2012-06-25T19:17:39.103 回答
1

克里斯想说的是,您的手机和服务器可能配置为不同的时区。

尝试打印cal.getTimeZone(). 如果这是您想要选择用于通信的时区的问题。例如:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+0"));

根据 JavaDocs,日历实例使用以下报告的默认时区:

TimeZone.getDefault()

尽管您的服务器和移动设备设置为相同的时区,但不一定意味着它们使用相同的默认时区。

于 2012-06-25T19:47:30.167 回答