gpt4 book ai didi

c# - 为什么 Datetime.DayOfWeek 是错误的?

转载 作者:太空狗 更新时间:2023-10-30 00:01:13 24 4
gpt4 key购买 nike

考虑这段简单的代码

var date = new DateTime(1307, 10, 13);
Console.WriteLine(date.DayOfWeek);

它输出:

Thursday

但是,

wikipedia (法语版)说这个日期是星期五:

L'affaire débute au matin du vendredi 13 octobre 1307

谁是对的?

我的猜测是 .Net 没有考虑儒略历/公历的变化。

最佳答案

my guess is that .Net doesn't take julien/gregorian calendar change into account

确实如此 documented (强调我的):

The DateTime value type represents dates and times with values ranging from 00:00:00 (midnight), January 1, 0001 Anno Domini (Common Era) through 11:59:59 P.M., December 31, 9999 A.D. (C.E.) in the Gregorian calendar.

请注意,如果没有更多信息,它无法考虑 Julian/Gregorian 转换,因为它发生在不同地点的不同日期。

如果您知道要在儒略历中表示日期,我建议您使用 JulianCalendar类。

using System;
using System.Globalization;
using static System.FormattableString;

public class Program
{
public static void Main()
{
var julianCalendar = new JulianCalendar();
var date = new DateTime(1307, 10, 13, julianCalendar);

Console.WriteLine(Invariant($"Gregorian: {date:yyyy-MM-dd}"));
Console.WriteLine(date.DayOfWeek);
}
}

输出:

Gregorian: 1307-10-21
Friday

关于c# - 为什么 Datetime.DayOfWeek 是错误的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com