2016-05-27 67 views
0

我有生成icalendar事件的代碼,包括夏時制的時區定義。如何測試icalendar夏令時是否工作?

時區爲CET/CEST這樣定義:

BEGIN:VTIMEZONE 
TZID:Europe/Prague 
BEGIN:DAYLIGHT 
TZOFFSETFROM:+0100 
TZOFFSETTO:+0200 
TZNAME:CEST 
DTSTART:20160327T020000 
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:+0200 
TZOFFSETTO:+0100 
TZNAME:CET 
DTSTART:20161030T030000 
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 
END:STANDARD 
END:VTIMEZONE 

雖然我相信這個時區的定義是正確的,活動將有正確的期間STANDARD時間偏移量(正常工作與CEST到目前爲止),什麼都可以我確定嗎?

我可以手動設置時鐘爲30. 10. 2016 3:00,但這種方式我不能模擬3:00 - > 2:00的偏移過渡將自動發生(由於NTP),因爲我然後必須手動將時鐘設置回一小時,這樣我會在夏令時變化之前的一小時內讓我恢復。

有沒有一種方法來欺騙時間與自己的NTP服務器或強制操作系統(Linux在這種情況下)來改變時間偏移?或者其他任何模擬時間偏移變化的技巧?

回答

0

好吧,最終我想出了自己。

對於在用戶會話中啓動的程序,應該足以設置USER時區(例如在KDE時間小程序中)。但是在Thunderbird的Lightning日曆中,您必須在Lightning自己的設置中設置時區。不要忘記關閉Ligtning窗口並再次打開以應用更改。

對於用戶會話之外的進程,我假設您必須更改系統範圍的時區。

然後設置日期前進/後退任何時候你想測試。