Javascript 从给定日期获取星期天

Javascript 从给定日期获取星期天,javascript,jquery,calendar,dayofweek,Javascript,Jquery,Calendar,Dayofweek,我正在写我自己的日历插件,但我很难得到一个给定日期的星期几 假设我有1905年,第4个月和第23天。是否有任何方法可以使用这些数据-以更好的格式(比如YYYY/DD/MM)将其粉碎,并使用这些数据计算一周中的哪一天-我希望找到一些类似PHP的公历方法,但我还没有找到任何方法 很抱歉,如果以前有人问过这一问题,我只能使用“每周的今天”的“新日期”来查找问题。构造一个日期对象,并询问它现在是哪一天: // Note months are zero indexed so May is 4, not 5

我正在写我自己的日历插件,但我很难得到一个给定日期的星期几

假设我有1905年,第4个月和第23天。是否有任何方法可以使用这些数据-以更好的格式(比如YYYY/DD/MM)将其粉碎,并使用这些数据计算一周中的哪一天-我希望找到一些类似PHP的公历方法,但我还没有找到任何方法


很抱歉,如果以前有人问过这一问题,我只能使用“每周的今天”的“新日期”来查找问题。

构造一个日期对象,并询问它现在是哪一天:

// Note months are zero indexed so May is 4, not 5
var d = new Date(1905, 4, 23).getDay(); // 2
您可以将其转换为函数:

function getDay(y, m, d) {
  var days = ['Sunday','Monday','Tuesday',
     'Wednesday','Thursday','Friday','Saturday'];
 var d = new Date(y, --m, d);
 return d && days[d.getDay()];
}

// What day was 23 May, 1905?
console.log(getDay(1905,5,23)); // Tuesday
编辑 请注意,这些类型的函数将两位数的年份转换为20世纪的日期,例如

var d = new Date(5, 4, 23) // 23 May, 1905
他们不会检查这些值是否为有效日期:

var d = new Date(5, 16, 23) // 23 May, 1906
如果不希望这样,则必须以不同的方式构造日期并检查值:

// Create a generic date object
var d = new Date();

// Set the values for 23 May, 0005
// This way doesn't convert 5 to 1905
d.setFullYear(5, 4, 23);

// Check at least 2 values in the date are the same as the input
// The easiest to check are year and date
if (d.getFullYear() == 5 && d.getDate() == 23) {  
  console.log(d + 'is a valid date!');
}

您可以基于上述内容创建一个单独的函数,以创建返回日期对象或NaN的日期,如果值无效(并以两位数的年份为准)。

构造一个日期对象,并询问它是哪一天:

// Note months are zero indexed so May is 4, not 5
var d = new Date(1905, 4, 23).getDay(); // 2
您可以将其转换为函数:

function getDay(y, m, d) {
  var days = ['Sunday','Monday','Tuesday',
     'Wednesday','Thursday','Friday','Saturday'];
 var d = new Date(y, --m, d);
 return d && days[d.getDay()];
}

// What day was 23 May, 1905?
console.log(getDay(1905,5,23)); // Tuesday
编辑 请注意,这些类型的函数将两位数的年份转换为20世纪的日期,例如

var d = new Date(5, 4, 23) // 23 May, 1905
他们不会检查这些值是否为有效日期:

var d = new Date(5, 16, 23) // 23 May, 1906
如果不希望这样,则必须以不同的方式构造日期并检查值:

// Create a generic date object
var d = new Date();

// Set the values for 23 May, 0005
// This way doesn't convert 5 to 1905
d.setFullYear(5, 4, 23);

// Check at least 2 values in the date are the same as the input
// The easiest to check are year and date
if (d.getFullYear() == 5 && d.getDate() == 23) {  
  console.log(d + 'is a valid date!');
}

您可以基于上述内容创建一个单独的函数,以创建返回日期对象或NaN的日期,如果值无效(并使用两位数年份)。

请参见此处我尝试了您的方法,但在研究中它返回2-这是一个星期二-这是一个星期天(0)?@Phish月份基于0。因此,在这种情况下,
4
is可能不是AprilGotcha和@RobG,我错误地相信了我找到的日期查找。这太棒了,谢谢大家!我尝试过你的方法,但它在研究中返回2-这是一个星期二-这是一个星期天(0)?@钓鱼月是0为基础。因此,在这种情况下,
4
is可能不是AprilGotcha和@RobG,我错误地相信了我找到的日期查找。这太棒了,谢谢大家!