[英]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.