我想獲取當地時間,當它是在不同時區的午夜時。 我的意思是:在其他時區獲取當地時間午夜時間
- 什麼時間在斯德哥爾摩,在倫敦午夜的時候?
- 在斯德哥爾摩,在赫爾辛基的午夜時分,現在幾點鐘?
這裏是我的代碼有
public static void main(String[] args) throws ParseException {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Stockholm"));
Date date = formatter.parse("2013-04-13 00:00:00.000");
System.out.println("London: " + formatter.format(getFirstInstantOfDay("Europe/London", date)));
System.out.println("Helsinki: " + formatter.format(getFirstInstantOfDay("Europe/Helsinki", date)));
}
public static Date getFirstInstantOfDay(String timeZoneId, Date date) {
Calendar resultDate = Calendar.getInstance(TimeZone.getTimeZone(timeZoneId));
resultDate.setTime(date);
resultDate.set(Calendar.HOUR, 0);
resultDate.set(Calendar.MINUTE, 0);
resultDate.set(Calendar.SECOND, 0);
resultDate.set(Calendar.MILLISECOND, 0);
return resultDate.getTime();
}
輸出是:
London: 2013-04-12 13:00:00.000
Helsinki: 2013-04-12 23:00:00.000
而且我預計:赫爾辛基不出所料
London: 2013-04-13 01:00:00.000
Helsinki: 2013-04-12 23:00:00.000
的結果,但對於倫敦來說,這是一個瘋狂的結果,我不明白它來自哪裏。
----- -----編輯
最終代碼與預期輸出:
String dateStr = "2013-04-13";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.setTimeZone(TimeZone.getTimeZone("Europe/London"));
Date dateGB = formatter.parse(dateStr);
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Stockholm"));
Date dateSE = formatter.parse(dateStr);
formatter.setTimeZone(TimeZone.getTimeZone("Europe/Helsinki"));
Date dateFI = formatter.parse(dateStr);
DateFormat stockholmFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
stockholmFormatter.setTimeZone(TimeZone.getTimeZone("Europe/Stockholm"));
System.out.println("Midnight in London is " + stockholmFormatter.format(dateGB) + " in Stockholm.");
System.out.println("Midnight in Stockholm is " + stockholmFormatter.format(dateSE) + " in Stockholm.");
System.out.println("Midnight in Helsinki is " + stockholmFormatter.format(dateFI) + " in Stockholm.");
輸出:
Midnight in London is 2013-04-13 01:00:00.000 in Stockholm.
Midnight in Stockholm is 2013-04-13 00:00:00.000 in Stockholm.
Midnight in Helsinki is 2013-04-12 23:00:00.000 in Stockholm.
爲什麼從頭開始解析斯德哥爾摩時區的日期?這對我來說沒有意義。顯然你正在使用'HOUR'字段,你應該使用'HOUR_OF_DAY'。 –
那麼它對你有什麼意義? – Oliveira
難道你不想首先在另一個時區選擇特定日期的午夜,然後在你的時區重新解釋那個時刻嗎?你現在正在做的是沒有達到這個目標。 –