[英]C# Handling Daylight Saving in Time Conversion
我有一個日期字符串2020-11-26T14:24:29-08:00
傳遞給后端 ASP NET MVC 應用程序。
我正在使用以下代碼解析日期/時間字符串:
DateTime dateTime = DateTimeOffset.ParseExact("2020-11-26T14:24:29-08:00",
"yyyy'-'MM'-'dd'T'HH':'mm':'sszzz",
CultureInfo.InvariantCulture).DateTime;
這段代碼給了我比實際時間少 1 小時的時間。 這是因為夏令時。
現在,我想知道夏令時是否在時區有效。 所以我寫了下面的代碼:
var offset = DateTimeOffset.ParseExact("2020-11-26T14:24:29-08:00",
"yyyy'-'MM'-'dd'T'HH':'mm':'sszzz",
CultureInfo.InvariantCulture);
TimeZoneInfo zone = null;
foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
{
if(zone.BaseUtcOffset == offset.Offset)
zone = z; // this runs multiple times
}
上面的代碼if
條件多次命中,並且以下區域滿足條件。
所以,我進一步縮小了代碼范圍
var offset = DateTimeOffset.ParseExact("2020-11-26T14:24:29-08:00",
"yyyy'-'MM'-'dd'T'HH':'mm':'sszzz",
CultureInfo.InvariantCulture);
TimeZoneInfo zone = null;
foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
{
if(zone.BaseUtcOffset == offset.Offset && zone.SupportsDaylightSavingTime) // added second condition
zone = z; // this runs multiple times
}
這次我得到了三個:
是否有可能獲得確切的時區? (我知道這個用戶在Pacific Standard Time
)或者可以使用任何(第一個)並添加一個小時來獲得正確的時間嗎?
如果您只能使用該日期時間字符串,我懷疑您必須希望他們給您的偏移量與他們的時區夏令時一致(因此對於同一位置可能會有所不同)。
我認為在給出有用的答案之前可能需要更多信息。 這個值來自哪里,夏令時有什么用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.