C# DateTime DayOfWeek对于遥远未来的年份日期不正确
我在用C#做实验。我编写了一个控制台应用程序,其主要方法如下:C# DateTime DayOfWeek对于遥远未来的年份日期不正确,c#,date,datetime,dayofweek,C#,Date,Datetime,Dayofweek,我在用C#做实验。我编写了一个控制台应用程序,其主要方法如下: static void Main(string[] args) { while (true) { Console.WriteLine(DateTime.Parse(Console.ReadLine()).DayOfWeek); } } 现在,这适用于近期(我不认为我正确地称之为近/远)和过去的日期,如2016年、2017年、1996年等,但不适用于29993000年等 这是什么原因?我不认为
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(DateTime.Parse(Console.ReadLine()).DayOfWeek);
}
}
现在,这适用于近期(我不认为我正确地称之为近/远)和过去的日期,如2016年、2017年、1996年等,但不适用于29993000年等
这是什么原因?我不认为这是因为闰年,因为2019年也很好
我想也不是为了YNK,因为我写了一整年:
15/01/3000
工作输入:
31/12/2015
05/05/2019
15/01/2099
17/07/3000
输入未产生正确结果:
31/12/2015
05/05/2019
15/01/2099
17/07/3000
解析很好。它没有产生正确的输出。例如,它应该在星期五返回,星期六返回,等等。UTC日期在2038年1月19日之后将是错误的 你是如何准确地进入这些年的?你能显示工作输入但不显示工作输入吗?@SonerGönül请查看编辑。这是无效的日期
15/01/3000
不可解析(对于我当前的文化),同样15/01/2000
不可解析。但是,01/15/3000
工作正常。如果您使用en GB
区域性,则15/01/3000
有效。顺便问一下,您的CurrentCulture
是什么?您能在1901年1月1日之前返回吗?是的。1856年2月1日审判。输出正常。这些输入不会产生Utc
作为Kind
。很抱歉,这与此无关。那么必须是上面讨论的区域性设置。向下投票。.NET的DateTime
在2038年没有溢出。您将其与完全无关的日期表示混淆。在.NET中,我们使用一个64位整数来计算自0001年1月1日起每秒1/10000000部分的数量,2038年没有溢出。您所想到的表示法(与asker描述的场景无关)使用符号32位整数计算自1970年1月1日以来的整秒数。