我在Android手机(Nexus One)和Java服务器之间进行时间转换时遇到了一些麻烦。我读过的所有内容都说它们是相同的,但是当我转换很长的时间戳时,我似乎要浪费1小时(完全是)。
特别是,如果我在android设备上运行以下代码,则会得到以下输出
代码:
Calendar g = Calendar.getInstance();
g.setTimeInMillis(1340661899000L);
Log.d(TAG, g.getTime().toLocaleString());
输出:2012年6月25日6:04:59 PM
我认为这是正确的,但是当我在Java服务器上运行完全相同的代码时,我得到的是同一天,但要早1个小时
代码:
Calendar g = Calendar.getInstance();
g.setTimeInMillis(1340661899000L);
System.out.println(g.getTime().toLocaleString());
输出:2012年6月25日下午5:04:59
有人知道是什么原因造成的吗?手机上的服务器和服务器都位于同一位置(这并不重要),服务器盒和手机上的时钟都匹配
考虑到相差一小时,您能否在服务器而不是电话上设置DST(夏时制),反之亦然?
克里斯想说的是,您的电话和服务器可能配置为不同的时区。
尝试打印cal.getTimeZone()
的结果。如果这是您要选择用于通信的时区的问题。例如:
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+0"));
根据JavaDocs,日历实例使用由以下人员报告的默认时区:
TimeZone.getDefault()
尽管您的服务器和移动设备被设置为相同的TimeZone,但不一定表示它们使用相同的默认TimeZone。