寻找某一年开始的日子

这个问题出现在我试图理解坂本的算法找到某一日期的那一天。

即使在阅读以下Stackoverflow答案之后,我发现算法的工作难以理解

所以,我决定首先解决一个特定问题,即找出某一年开始的日子(1月1日)。

根据Sakamoto的算法,我只是增加了由跳跃和非跳跃年贡献的额外时间。 我的代码如下:

public String getDay(String date)
{
    String[] days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };

    int day = Integer.parseInt(date.split("/")[0]);
    int month = Integer.parseInt(date.split("/")[1]);
    int year = Integer.parseInt(date.split("/")[2]);

    year--;     // to calculate the additional days till the previous year

    int dayOfTheWeek = (year + year/4 - year/100 + year/400) % 7;

    return days[dayOfTheWeek];
}

因此,对于“1/1/0001”日期,它将返回星期日。

为了验证它的正确性,我实现了Sakamoto的算法,并将结果与​​我的程序的结果进行比较,总是似乎是Sakamoto算法返回的前一天。

对于“1/1/0001”日期,我的程序将返回星期日,而坂本回归星期一。

所以,

1)这是否意味着公历是在星期一而不是星期天开始的?

2)如果是,是否意味着我应该在结果中加1来得到正确的日期,或者我的程序在逻辑上是不正确的?

最后,我使用了TimeAndDate网站的日计算器工具,并在周六开始“1/1/0001”。

我最后的问题是

3)公历开始的哪一天?

对这些问题的任何提示都非常感谢。

谢谢,


重塑车轮究竟是什么?

Joda-Time是Java中日期时间操作的事实标准,它为DateTime对象提供dayOfWeek方法。 请参阅http://joda-time.sourceforge.net/userguide.html#Querying_DateTimes

如果您仍然对如何正确计算细节感兴趣,请参阅https://github.com/JodaOrg/joda-time/blob/master/src/main/java/org/joda/time/chrono/BasicChronology。 Java的#L538

链接地址: http://www.djcxy.com/p/18535.html

上一篇: Finding the day in which a given year begins

下一篇: Date Math In Oracle related to .NET Ticks