在Java 中將日期和時間轉換為特定時區
此Java 程式旨在將目前系統日期和時間轉換為特定時區。但是,提供的程式碼會產生不正確的結果,顯示從印度轉換為中部標準時間 (CST) 時存在時間差異。
了解時區轉換
時區是偏遠地區使用相同的標準時間。計算另一個時區的等效時間時,您必須調整時區偏移和夏令時 (DST) 設定的差異。
分析程式碼
程式碼依賴 SimpleDateFormat 和 Calendar 類別來操作日期和時間值。它嘗試使用以下步驟將當前系統時間轉換為 CST:
解決差異
出現差異的原因是代碼未正確調整時區偏移和 DST 設定。提供的程式碼僅針對原始時區偏移進行調整,但不考慮 DST。
解決方案
要解決此問題,程式碼應針對原始時區進行調整抵消和 DST 節省。以下更正後的程式碼示範了這些調整:
<code class="java">Calendar calendar = Calendar.getInstance(); TimeZone fromTimeZone = calendar.getTimeZone(); TimeZone toTimeZone = TimeZone.getTimeZone("CST"); // Adjust for raw time zone offset calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1); // Adjust for daylight saving time if (fromTimeZone.inDaylightTime(calendar.getTime())) { calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1); } // Adjust to target time zone calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset()); if (toTimeZone.inDaylightTime(calendar.getTime())) { calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings()); } System.out.println(calendar.getTime());</code>
透過新增這些調整,程式碼將準確地將日期和時間轉換為指定的時區,包括 DST 調整。
以上是為什麼我的 Java 程式碼錯誤地將日期和時間轉換為 CST?的詳細內容。更多資訊請關注PHP中文網其他相關文章!