簡體   English   中英

如何在具有夏令時的時區中選擇一天的結束時間?

[英]How to pick end of day in a timezone with daylight savings?

給定一個日期,例如2013-03-24,我想將其轉換為美國/太平洋時區的這一天結束。 有沒有辦法確定該地區特定日期的時區是PST還是PDT? 順便說一句,我正在使用Java。

我懷疑沒有辦法做到這一點(至少不沒有查詢某個知道何時會發生時區轉換的地方的數據庫),但是我想檢查一下。

Java日歷將為您解決這一問題,無需嘗試自己整理時區。

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date dateInServerTZ = format.parse("2013-03-24");
Calendar calInServerTZ = Calendar.getInstance();
calInServerTZ.setTime(dateInServerTZ);
Calendar calInPST = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
calInPST.set(Calendar.YEAR, calInServerTZ.get(Calendar.YEAR));
calInPST.set(Calendar.DAY_OF_YEAR, calInServerTZ.get(Calendar.DAY_OF_YEAR));
calInPST.set(Calendar.HOUR_OF_DAY, 23);
calInPST.set(Calendar.MINUTE, 59);
calInPST.set(Calendar.SECOND, 59);
calInPST.set(Calendar.MILLISECOND, 999);
Date endOfDayPST = calInPST.getTime();

您可以通過解析為PST來消除步驟,但是我認為此示例使服務器時間與用戶時間之間的關系更加清楚。

這顯然會更有效:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
format.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
Date dateInPST = format.parse("2013-03-24");
Calendar calInPST = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles")); 
calInPST.setTime(dateInPST);
calInPST.set(Calendar.HOUR_OF_DAY, 23);
calInPST.set(Calendar.MINUTE, 59);
calInPST.set(Calendar.SECOND, 59);
calInPST.set(Calendar.MILLISECOND, 999);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM