我正在将UTC时间转换为从本地服务器时间到中央标准时间。我在德国的服务器上运行了此操作。
转换时间和日期有效,但是当库将其转换为字符串时,它的时区偏移错误。
它以 2019-05-11T14:44:09 02:00 出现。当我需要它是 2019-05-11T14:44:09-06:00
TimeZoneInfo CRtimezone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, CRtimezone);
02:00 是德国的UTCOFFSET,我不想要,即使时间和日期在中心时间正确。
是否有一种方法可以通过或包含DateTime对象中的偏移?
有没有办法通过或在dateTime对象中包含偏移?
不,DateTime
结构确实具有UTC偏移,但DateTimeOffset
具有。如果您真的想将UTC偏移值保留在代码中,我建议您使用DateTimeOffset
而不是DateTime
。
由于它无法保持UTC偏移值,因此当您获得 textual (又称字符串(表示时,您 still 在德国获取服务器的偏移值(包括K
,z
,zz
和zzz
指定器。TimeZoneInfo.ConvertTimeFromUtc
方法返回一个DateTime
实例,您可能要表示的偏移值取决于您要显示它。
一个选项可能是您可能想加入DateTime和TimeZoneInfo.BaseUtcOffset
值的可排序(" S"(格式指示符。
TimeZoneInfo CRtimezone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
$"{TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, CRtimezone).ToString("s")}{CRtimezone.BaseUtcOffset}".Dump();