2

如何获得任何给定年份的一周的第一天(日期为 1 到 7,或工作日名称)?

我试图用 JavaScript 来解决这个问题,但我接受任何其他语言。

我需要选择一年来构建完整的日历(我想使用 HTML 表格和 JavaScript),为此我至少需要知道所选年份的第一天。

我还没有找到专门处理查找任何给定年份的第一天的解决方案或问题,这样您只需要通过 1995、2007、1891。因此,如果这是一个重复的问题,请指出解决方案。

您是否至少有一个在线图表或 DHTML 网站,我可以在其中以这种方式直观地查看任何一年的任何完整日历?

4

5 回答 5

4

在 Javascript 中,你可以使用这个:

getWeekDay = function (year) {
  var d = new Date(); 
  d.setFullYear(year,0,1);
  return d.getDay()+1;
};

document.write(getWeekDay(2011));

根据要求,结果为 1..7。

于 2011-07-26T19:18:21.663 回答
2

使用 .NET 的 BCL:

return new DateTime(year, 1, 1).DayOfWeek; // DayOfWeek enum value

在野田时间

return new LocalDate(year, 1, 1).IsoDayOfWeek; // IsoDayOfWeek enum value

在 Java 中使用内置类:

Calendar calendar = Calendar.getInstance();
calendar.set(year, 1, 1);
return calendar.get(Calendar.DAY_OF_WEEK); // 1 (Sunday) - 7 (Saturday)

在 Java 中使用Joda Time

return new LocalDate(year, 1, 1).getDayOfWeek(); // 1 (Monday) - 7 (Sunday)
于 2011-07-26T19:09:37.060 回答
2

使用 C# 和 .NET 非常容易:

using System;

public class SomeClass
{
    public static void Main()
    {
        DateTime dt = new DateTime(2000,1,1);
        Console.WriteLine(dt.DayOfWeek);

        dt = new DateTime(2010,1,1);
        Console.WriteLine(dt.DayOfWeek);
    }
}

输出:

Saturday 
Friday

Java版本:

import java.util.Date;
import java.util.GregorianCalendar;

public class test3
{
    public static void main (String[] args)
    {
        GregorianCalendar c = new GregorianCalendar(2000,1,1);  
        Date d = c.getTime();
        System.out.println(d.getDay());

        c = new GregorianCalendar(2010,1,1);    
        d = c.getTime();
        System.out.println(d.getDay());
    }
}

输出:

2
1
于 2011-07-26T19:10:01.800 回答
2

在这篇Wikipedia article 中,查找 Sakamoto 算法。

于 2011-07-26T19:14:42.757 回答
1

这个网站http://5dspace-time.org/Calendar/Algorithm.html 很好地解释了如何用铅笔和纸来计算它

维基百科也解释了

于 2011-07-26T19:11:03.713 回答