我有下面的代碼片段:日期時間和簡單的日期時間格式的結果是不同的
DateTime dateTime = new DateTime().withZone(DateTimeZone.forID("America/Chicago"))
.withYear(2016)
.withMonthOfYear(8)
.withDayOfMonth(25)
.withHourOfDay(12)
.withMinuteOfHour(37);
System.out.println("DateTime: ");
System.out.println(dateTime.toDate().getTime());
String str = "2016-8-25 12:37 AM CST";
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-M-dd hh:mm a z");
System.out.println("SDF: ");
try {
System.out.println(sdf.parse(str).getTime()+"");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
按照我的理解,都代表同一日期(因此時代應該是相同的爲好)。然而,結果我得到的是:
DateTime:
1472146669119
SDF:
1451198220000
如果我更改時區以CDT,然後我得到:
DateTime:
1472146668746
SDF:
1451194620000
所以我希望某種靈魂會賜教(幫助這個可憐的靈魂)。
感謝
更新:
我使用以下修改後的代碼:
DateTime dateTime = new DateTime(2016, 8, 25, 12, 37, DateTimeZone.forID("America/Chicago"));
System.out.println("DateTime: ");
System.out.println(dateTime.toDate().getTime());
String str = "2016-8-25 12:37 AM CDT";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm a z");
System.out.println("SDF: ");
try {
System.out.println(sdf.parse(str).getTime()+"");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
現在我越來越:
DateTime:
1472146620000
SDF:
1472103420000
旁註:爲什麼你在你的模式中使用'YYYY'? –
你似乎沒有設置SimpleDateFormat的TimeZone。 – jtahlborn
好抓Sotirios! – user1539343