我对 SimpleDateFormat 有一个奇怪的问题,问题是日期格式化程序没有将日期解析到我的 TimeZone 中,即使 TimeZone.getDefault() 给了我正确的 TimeZone。
如果这还不够,我运行以下命令并得到以下结果(在评论中):
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yy HH:mm a");
Date now = new Date();
System.out.println(now); // Wed Jul 03 18:58:37 CDT 2013
System.out.println(df.format(now)); // 07/03/13 18:58 PM (ok)
System.out.println(df.parse("07/03/13 18:58 PM")); // Wed Jul 03 00:58:00 CDT 2013 (not ok)
System.out.println(df.parse(df.format(now))); // Wed Jul 03 00:58:00 CDT 2013
这怎么可能??我什至不确定 df.parse 方法在做什么,因为生成的时间永远不会超过凌晨 1 点,我的意思是,那是在 18:58,但现在我的时间是 7:32,我仍然得到 00:32而不是 1:32。
我错过了什么吗?字符串日期是从服务器获取的,它们的格式不能更改,因为它们用于其他已经生产的服务。
这发生在Android手机中,时间在手机中设置好。