将日期时间字符串转换为原始时区的日期时间

本文关键字:日期 时间 时区 原始 转换 字符串 | 更新日期: 2023-09-27 17:51:15

我有一个时间戳,格式为:

20110316 11:03:22.276919 -0400s

顺便说一句,有人知道这个日期时间后面的s是什么吗?

我正试图将其转换为它最初来自时区的datetime对象。但是执行以下转换:

DateTime.ParseExact(source, "yyyyMMdd HH:mm:ss.FFFFFF zzzz''s", CultureInfo.CurrentCulture)

自动转换为我的本地时区。

我期望的是我的日期时间中的11:03am的时间,但是由于我在这个时间戳后面2小时的时区,因此转换返回9:03am。除了执行字符串截断以忽略时区之外,是否有一种方法可以解析日期,同时将其保留在其来自的时区中?

将日期时间字符串转换为原始时区的日期时间

使用DateTimeOffset
DateTimeOffset dto = DateTimeOffset.ParseExact("20110316 11:03:22.276919 -0400s", @"yyyyMMdd HH':mm':ss'.FFFFFF zzz's", null);
Console.WriteLine(dto.DateTime);

您需要在转换中设置CultureInfo的确切来源。

交货。//if its from US then cultureInfo is like CultureInfo us = new CultureInfo("en-US"); DateTime.ParseExact(source, "yyyyMMdd HH:mm:ss.FFFFFF zzzz''s", us)