Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串格式化为带时区的日期时间_C#_.net_Parsing_Timezone - Fatal编程技术网

C# 将字符串格式化为带时区的日期时间

C# 将字符串格式化为带时区的日期时间,c#,.net,parsing,timezone,C#,.net,Parsing,Timezone,我有一个string s=“2010年5月16日7:20:12 AM CDT,我想将其转换为DateTime对象。在下面的代码中,我得到一个日期格式无法转换错误,当我试图用已知格式解析文本时 timeStamp = matches[0].Groups[1].Value; dt = DateTime.ParseExact(timeStamp, "MMM dd, yyyy H:mm:ss tt", null); 时区是CDT UTC…我想是什么导致了问题或我的格式? 试试这个: string dt

我有一个
string s=“2010年5月16日7:20:12 AM CDT
,我想将其转换为DateTime对象。在下面的代码中,我得到一个日期格式无法转换错误,当我试图用已知格式解析文本时

timeStamp = matches[0].Groups[1].Value;
dt = DateTime.ParseExact(timeStamp, "MMM dd, yyyy H:mm:ss tt", null);
时区是CDT UTC…我想是什么导致了问题或我的格式?

试试这个:

string dts = "May 16, 2010 7:20:12 AM CDT";
DateTime dt = 
    DateTime.ParseExact(dts.Replace("CDT", "-05:00"), "MMM dd, yyyy H:mm:ss tt zzz", null);
编辑:

夏令时请考虑和


确保日期时间是明确的DateTimeKind.Utc。避免使用“GMT”,因为它对于夏令时是不明确的

    var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc);
    string s = dt.ToLocalTime().ToString("MMM dd, yyyy HH:mm:ss tt \"GMT\"zzz");
它给出的输出:2010年12月31日19:01:01 pm GMT-06:00


有关更多详细信息,请参阅此

var dt=DateTime.ParseExact(s,“MMM dd,yyyy H:mm:ss tt'CDT',null)如何;?如果CDT有夏令时并变为-4,会发生什么情况?我在哪里可以找到有关偏移和时区的信息,我也可能将CST作为时区,需要替换和处理夏令时。若要将此日期转换为UTC,我不能只使用dt.ToUniversalTime()吗?请注意,
IsDaylightSavingTime
如果时间是
TimeZoneInfo.Local
时区中的昼间时间,则返回true,而不是您调用该方法的
DateTime
实例所设置的时间。这有多糟糕?如果运行该应用程序的机器是UTC,则该方法始终返回
false
这是正确的o使用UTC,因为它是国际标准,但GMT对于夏令时并不含糊。GMT始终为UTC+0。英国在夏季切换到英国夏令时。更多信息,请访问