【问题标题】:Get the week day from a given date从给定日期获取工作日
【发布时间】:2014-06-11 08:28:04
【问题描述】:

我正在编写自己的日历插件,但我很难获得给定日期的星期几。

假设我有年份 - 1905,月份 - 4 和日期 - 23。有什么办法可以使用这些数据 - 以更好的格式将它们组合在一起,比如 YYYY/DD/MM 并使用这是为了计算星期几 - 我希望能找到一些像 PHP 一样的公历方法,但我还没有找到。

很抱歉,如果之前有人问过这个问题,但我只能使用 new Date 找到一周中今天的问题。

【问题讨论】:

标签: javascript jquery calendar dayofweek


【解决方案1】:

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

// 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 可能不是四月
  • Gotcha 和@RobG 我犯了一个错误,相信我找到的日期查找位置。太好了,谢谢大家!
猜你喜欢
  • 1970-01-01
  • 2014-04-30
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多