在不同机器上将日期格式化为字符串时的不同含义。
Calendar date = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+03:00"));
sdf.format(date.getTime());
yyyy-MM-dd'T'HH:mm:ssXXX 应将日期作为字符串返回,其中 XXX 为 +TimeZone 即 +03:00
在一台机器上,结果是正确的2018-06-08T13:47:16+03:00,而在另一台机器上,结果是不正确的2018-06-08T13:47:16Z。
谁能说说是什么原因?
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
很久以前,我不知何故触及了一个类似的问题,问题是
timezoneWindows 中存在某种曲线。修复很简单:
是的,检查
TimeZone.getAvailableIds(3*60*60*1000)不同机器上的列表,它们会有所不同(取自操作系统)由于您使用的是 java 8,我建议您尝试使用 JDK 本身在 java.time 包中提供的 API。在我看来,这是一种更原生的方法。尝试在此处使用此代码:
我希望这可以解决您的问题,即使它没有回答为什么您的选项不起作用的问题。