C# 将Datetime字符串转换为原始时区中的Datetime

C# 将Datetime字符串转换为原始时区中的Datetime,c#,C#,我有以下格式的时间戳: 20110316 11:03:22.276919 -0400s 顺便问一下,有人知道这次约会结束时的“s”是什么吗 我正在尝试将它转换为它最初来自的时区中的datetime对象。但是,执行以下转换时: DateTime.ParseExact(source, "yyyyMMdd HH:mm:ss.FFFFFF zzzz\\s", CultureInfo.CurrentCulture) 自动将其转换为我的本地时区 我期望的是datetime中的时间是上午11:03,但是由

我有以下格式的时间戳:

20110316 11:03:22.276919 -0400s
顺便问一下,有人知道这次约会结束时的“s”是什么吗

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

DateTime.ParseExact(source, "yyyyMMdd HH:mm:ss.FFFFFF zzzz\\s", CultureInfo.CurrentCulture)
自动将其转换为我的本地时区

我期望的是datetime中的时间是上午11:03,但是由于我所在的时区比这个时间戳中的时区晚了2小时,因此转换返回的是上午9:03。除了执行字符串截断以忽略时区外,还有没有其他方法可以在将日期保留在其来源的时区的同时解析日期?

使用DateTimeOffset

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

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

例如,
//如果它来自美国,那么cultureInfo就像
CultureInfo us=新的CultureInfo(“en us”);

DateTime.ParseExact(源代码,“yyyyMMdd HH:mm:ss.FFFFFF zzzz\\s”,美国)

关于最后的
s
,您能告诉我们是什么系统创建了时间戳吗?我想知道它是用来显示夏令时的,是程序员想用它来表示结束的字符,还是一个假的字符。它来自一个叫做Fidessa的交易系统。我没有考虑过夏令时的角度,我将对此进行探讨。谢谢你,安德鲁。我认为这不对。文化信息与语言有关,与时区无关。你可以在世界任何地方和我们说英语(你的笔记本电脑不在乎),但你的时区会有所不同。我的问题是,考虑到你在世界上的位置,这个时间戳的时区是什么时候。