簡體   English   中英

如何在Java中抵消日期以調整為DST

[英]How to offset Date to adjust to DST in Java

我有一份用Java編寫的工作,每天在該時區的指定時間運行。 例如,如果我在0800時首次開始工作,則必須每天都在同一時間運行該工作。 如果時區不遵循夏令時,則此方法工作正常。 但是,如果遵循DST,則會中斷。

例如,如果我第一次在0800 PST開始工作,只要DST無效,它就必須始終在UTC 0000小時運行,但如果DST生效,則應該在前一天移至UTC 2300 hr。 如何針對這些DST更改以編程方式調整我的工作開始時間。

我的輸入如下所示:

String startdate = "2012-06-16T08:00:00"
String timeZone = "PST";

這些將是位於配置文件中的常量,並且一旦設置就無法修改。 不管DST是否生效,輸入都將是PST。

因此,如果當前時區為PST,則它將在UTC 2012-06-16的0000小時運行,否則,它將在UTC 2012-06-15的2300個小時的時間運行。

我該如何實現。

注意:這不是作業問題,我來自不遵循DST的地區,所以這對我來說有點令人困惑。

提前致謝。

我不知道您如何安排工作,但是如果您手動計算下一個執行日期,則可以使用java.util.Calendar ,如下所示:

TimeZone tz = TimeZone.getTimeZone( timeZone );
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss" );
dateFormat.setTimeZone( tz );
Calendar cal = Calendar.getInstance();
cal.setTimeZone( tz );
cal.setTime( dateFormat.parse( startdate ) );

然后,在每次執行該作業之后,您可以計算該作業的下一個運行時間:

cal.add( Calendar.DAY_OF_YEAR, 1 );

這將增加一個日歷日,而不是24小時。 因此,如果開始日期是當地時間上午8點,那么即使在夏令時期間,它也將繼續在當地時間上午8點運行。 日歷將為您處理DST轉換。

暫無
暫無

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

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