C# 为什么可以';我把这个字符串解析成DATETMETROBY,我的系统时钟设置为香港时间?

C# 为什么可以';我把这个字符串解析成DATETMETROBY,我的系统时钟设置为香港时间?,c#,datetimeoffset,C#,Datetimeoffset,如果你改变你的系统时钟 强>从:< /强>例如香港时间或中国标准时间(UTC + 8)< /P> 至:东部标准时间(UTC-5) 那么下面的代码就可以工作了 如果时钟未设置为EST,DateTimeOffset不喜欢“0001-01-01T00:00:00” string token = "0001-01-01T00:00:00"; if (!DateTimeOffset.TryParse(token, out var offsetDate)) { Console.WriteLine(“W

如果你改变你的系统时钟

<>强>从:< /强>例如香港时间或中国标准时间(UTC + 8)< /P> 至:东部标准时间(UTC-5)

那么下面的代码就可以工作了

如果时钟未设置为EST,DateTimeOffset不喜欢“0001-01-01T00:00:00”

string token = "0001-01-01T00:00:00";
if (!DateTimeOffset.TryParse(token, out var offsetDate))
{
   Console.WriteLine(“Why?”);
}

为什么…?

如果您在EST时间,则该值表示UTC时间大于1/1/0001 12:00:00 AM+00:00,这是
日期时间偏移量的最小值。所以你没事


如果您在香港时间上,该值将小于<代码> DATEMEMPLOSS.MIN值< /代码>。该值不能表示为

DateTimeOffset
,因此
TryParse
失败。

这是正确的。但还要注意,如果输入时间是UTC,则可以通过在输入字符串中包含尾随的
Z
或将
DateTimeStyle.AssumeUniversal
传递到
TryParse
方法来避免这种情况。