簡體   English   中英

有沒有辦法讓DateTime.IsDaylightSavingTime在具有GMT / UTC時間的機器上工作?

[英]Is there a way to make DateTime.IsDaylightSavingTime work on a machine with GMT/UTC time?

我試圖知道是否有辦法讓DateTime對象在設置為GMT時間的操作系統上獲得所有正確的屬性。 不只是改變時間。

現在我正在做的是:

DateTime f = new DateTime(2012, 8, 1); //A date on summer

DateTime f2 = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(f, TimeZoneInfo.Local.Id, "Central Europe Standard Time");

var isSummer = f2.IsDaylightSavingTime(); //It always returns false if the OS is on GMT

它改變了小時和日期,使GMT成為中歐標准時間就好了,但IsDaylightSavingTime功能不起作用。 它總是返回false,因為我在系統上使用GMT,但我認為不應該因為我為中歐創建了一個DateTime

有沒有辦法讓DateTime對象f2真的是本地的,讓它明白,如果它的八月是歐洲中心,它應該返回true而不是false?

我知道如果我在機器上使用本地時間它可以正常工作,但我無法改變服務器上的GMT時間。 我很樂意,但我不能。 :-)

如果Kind為Local或Unspecified,則DateTime.IsDayLightSavingTime返回true,並且此DateTime實例的值在當前時區的夏令時范圍內

即DateTime對象檢查系統時區,因為UTC不支持夏令時,它返回true。

如果要驗證,如果指定的時間屬於時區的夏令時,則在TimeZoneInfo中使用IsDayLightSavingTime方法

DateTime f = new DateTime(2012, 8, 1); //A date on summer 
TimeZoneInfo tzf2=TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
DateTime f2 = TimeZoneInfo.ConvertTime(f, tzf2);
var isSummer = tzf2.IsDaylightSavingTime(f2);

暫無
暫無

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

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