簡體   English   中英

C# 處理夏令時轉換

[英]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條件多次命中,並且以下區域滿足條件。

  • 育空標准時間
  • 太平洋標准時間(墨西哥)
  • UTC-08
  • 太平洋標准時間

所以,我進一步縮小了代碼范圍

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.

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