Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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# 将字符串转换为DateTime,保持DateTime不变_C#_Datetime - Fatal编程技术网

C# 将字符串转换为DateTime,保持DateTime不变

C# 将字符串转换为DateTime,保持DateTime不变,c#,datetime,C#,Datetime,我想将下面的字符串转换为c#代码中的DateTime 上述代码将其转换为:2017年3月29日上午10:51:44 我在转换过程中损失了大约7个小时,如何得到结果:2017-03-29 17:51:44。我认为这与文化有关 请帮忙 我建议使用DateTime.Parse来提供更健壮的转换: DateTime dt1 = DateTime.Parse("2017-03-29T17:51:44.8389637Z", CultureInfo.CurrentCulture, DateTimeStyles

我想将下面的字符串转换为c#代码中的DateTime

上述代码将其转换为:2017年3月29日上午10:51:44 我在转换过程中损失了大约7个小时,如何得到结果:2017-03-29 17:51:44。我认为这与文化有关


请帮忙

我建议使用DateTime.Parse来提供更健壮的转换:

DateTime dt1 = DateTime.Parse("2017-03-29T17:51:44.8389637Z", CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal);

发生这种情况的原因是您有一个以
Z
结尾的日期/时间字符串。这表示它是在UTC时间。当您转换为日期时间时,它将转换为您当地文化的时间,因此您将损失整整七个小时,因为您的时区比UTC晚七个小时

根据,

如果时间以UTC为单位,则在时间后直接添加一个Z,不带空格。Z是UTC零偏移的区域标识符。因此,“09:30 UTC”表示为“09:30Z”或“0930Z”。“14:45:15 UTC”将是“14:45:15Z”或“144515Z”

因此,您的
2017-03-29 17:51:44
字符串和
3/29/2017 10:51:44 AM
是完全相同的时间,在不同的时区


编辑:正如其他人所说,只需使用
DateTime.Parse
来指定创建日期时间的方式。

我必须说,发送某人到bing而不是google it的做法并不常见
DateTime dt1=Convert.ToDateTime(DateTime,CultureInfo.InvariantCulture).ToUniversalTime()
使用
日期时间。使用重载解析
,指定
日期时间样式
,以便您可以控制时间是转换为UTC还是转换为本地时间。请看这里:谢谢jam23,非常感谢您的详细回答!这是一种一旦你知道了就完全有意义的事情,但并不总是直观的。干杯
DateTime dt1 = DateTime.Parse("2017-03-29T17:51:44.8389637Z", CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal);