寻找某一年开始的日子
这个问题出现在我试图理解坂本的算法找到某一日期的那一天。
即使在阅读以下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