如何获得任何给定年份(第1天至第7天或工作日名称)的一周中的第一天?
我试图在JavaScript中弄明白,但我接受任何其他语言。
我需要选择一年才能构建完整的日历(我想使用HTML表格和JavaScript),为此我至少需要知道所选年份的第一天。
我没有找到解决方案或问题,专门处理找到任何给定年份的第一天,这样你只需要通过1995年,2007年,1891年。所以,如果这是一个重复的问题请指出解决方案。
您是否至少有一个在线图表或DHTML网站,我可以通过这种方式直观地查看任何一年的完整日历?
答案 0 :(得分:4)
在Javascript中你可以使用它:
getWeekDay = function (year) {
var d = new Date();
d.setFullYear(year,0,1);
return d.getDay()+1;
};
document.write(getWeekDay(2011));
根据要求,结果为1..7。
答案 1 :(得分:2)
使用.NET的BCL:
return new DateTime(year, 1, 1).DayOfWeek; // DayOfWeek enum value
在Noda Time中:
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)
答案 2 :(得分: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
答案 3 :(得分:2)
在此Wikipedia article,查找Sakamoto的算法。
答案 4 :(得分:1)
此网站http://5dspace-time.org/Calendar/Algorithm.html 有关如何使用铅笔纸计算它的很好的解释
Wikipedia也解释了