2
我有最简单的方法解析一个字符串到DateTime 但返回类型是DateTimeOffset?。为什么DateTime.TryParseExact()为这些输入字符串返回不同的时区?
我预计输出为
2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +01:00
而是它是
2011-01-11 00:00:00 +01:00
2011-10-11 00:00:00 +02:00
为什么会出现这种现象?我的测试程序如下。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Parse("20110111").ToString());
Console.WriteLine(Parse("20111011").ToString());
Console.ReadLine();
}
public static DateTimeOffset? Parse(string date)
{
DateTime parsedDate;
if (DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate))
{
return parsedDate;
}
return null;
}
}
@JoelCoehoorn,谢谢你的编辑:) – Habib
为了扩大这一点 - 本地计算机的时区正在被应用,当'parsedDate'变量被隐式地从DateTime转换为DateTimeOffset? ,因为这就是声明为方法的返回类型。 –