Iza*_*cch 3 c# timezone datetime datetimeoffset
可能是一个超级简单的解决方案,但我显然错过了一些东西。
我有一个值为“2020/07/29 13:30:00”的字符串对象。
我如何将其解析为 DateTimeOffset 对象,并假设该解析时间的时区是“GMT 标准时间”,或者是我希望指定的任何 TimeZoneInfo?
然后,我如何获取该 DateTimeOffset,并返回其 Utc 时间,但返回到我选择的任何指定时区?
非常感谢
我能找到的最简单的就是这样的。
我找不到任何方法来解析DateTimeOffset特定给定时区中的 a ,但是您可以将字符串解析为 a DateTime( 使用 a Kindof Unspecified,它只是充当字符串中信息位的容器,而无需尝试应用时区知识到它)。
然后,您可以询问TimeZoneInfo给UTC定当地时间在给定时区的偏移量,并将其应用于DateTime创建一个DateTimeOffset.
一旦您获得了DateTimeOffset,您就可以使用它的ToOffset方法和 来使用它TimeZoneInfo.ConvertTime。
string input = "2020/07/29 13:30:00";
var timezone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
// DateTime.Parse creates a DateTime with Kind == Unspecified
var dateTime = DateTime.Parse(input);
Console.WriteLine(dateTime); // 7/29/2020 1:30:00 PM
// Since Kind == Unspecified, timezone.GetUtcOffset will give us the UTC offset in effect at
// the given local time in timezone
var dateTimeOffset = new DateTimeOffset(dateTime, timezone.GetUtcOffset(dateTime));
Console.WriteLine(dateTimeOffset); // 7/29/2020 1:30:00 PM +01:00
// Convert to UTC
Console.WriteLine(dateTimeOffset.UtcDateTime); // 7/29/2020 12:30:00 PM
Console.WriteLine(dateTimeOffset.ToOffset(TimeSpan.Zero)); // 7/29/2020 12:30:00 PM +00:00
// Convert to another timezone
var cst = TimeZoneInfo.FindSystemTimeZoneById("Central America Standard Time");
Console.WriteLine(TimeZoneInfo.ConvertTime(dateTimeOffset, cst)); // 7/29/2020 6:30:00 AM -06:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3417 次 |
| 最近记录: |