Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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 - Fatal编程技术网

C# 为什么我的时间增加了两个小时

C# 为什么我的时间增加了两个小时,c#,.net,C#,.net,我在努力解析时间。我的输入是一个以“Z”结尾的时间字符串。我希望是UTC。当我解析这个字符串时,两个小时被添加到结果中。我不知道为什么。使用特定的文化并没有任何区别 System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US"); string inTime = "2015-04-25T23:39:15Z"; DateTime outTime = DateTime.Parse(inTime,

我在努力解析时间。我的输入是一个以“Z”结尾的时间字符串。我希望是UTC。当我解析这个字符串时,两个小时被添加到结果中。我不知道为什么。使用特定的文化并没有任何区别

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("en-US");
string inTime = "2015-04-25T23:39:15Z";
DateTime outTime = DateTime.Parse(inTime, ci);
string outTime_string = outTime.ToString("yyyy-MM-ddTHH:mm:ssZ", ci);
// outTme and outTime_string are both 2015-04-26T01:39:15Z
它返回当地时间

:

我建议您解析为DateTimeOffset,而不是DateTime,格式为字符串:

时区是一个真正的难题

它返回本地时间:

:

我建议您解析为DateTimeOffset,而不是DateTime,格式为字符串:


时区是一个真正的难题

默认情况下,
DateTime.Parse
转换为一种“类型”的
Local
。(打印出
outTime.Kind
以验证这一点。)这样它就知道源代码是通用的,但它正在根据系统本地时间进行调整。请注意,文化与仅时区的格式和日历系统无关

您可以通过指定
datetimestyle
值来防止这种情况:

DateTime outTime = DateTime.Parse(inTime, ci, DateTimeStyles.AdjustToUniversal);
此时,
outTime.Kind
将为
Utc
,该值将如预期的那样为23:39 pm


快速插入:整个
DateTime.Kind
位乱七八糟。拥有一个表示三种不同值的类型是很糟糕的。您可能想在我的项目中寻找在.NET中处理日期/时间的另一种方法。

默认情况下,
DateTime.Parse
转换为一种“类型”的
本地
。(打印出
outTime.Kind
以验证这一点。)这样它就知道源代码是通用的,但它正在根据系统本地时间进行调整。请注意,文化与仅时区的格式和日历系统无关

您可以通过指定
datetimestyle
值来防止这种情况:

DateTime outTime = DateTime.Parse(inTime, ci, DateTimeStyles.AdjustToUniversal);
此时,
outTime.Kind
将为
Utc
,该值将如预期的那样为23:39 pm

快速插入:整个
DateTime.Kind
位乱七八糟。拥有一个表示三种不同值的类型是很糟糕的。您可能希望查看我的项目,以了解在.NET中处理日期/时间的另一种方法