如何获取特定工作日的日期然后格式化

时间:2016-02-03 01:30:36

标签: javascript date

所以我已经能够通过以下代码找到我需要的特定工作日日期(下一个即将到来的星期三):

var date = new Date();
date.setDate(date.getDate() + (3 - 1 - date.getDay() + 7) % 7 + 1);

然而,我现在正试图以适合我的方式格式化它,但我无法弄清楚如何。我试过这个:

var date = new Date();
date.setDate(date.getDate() + (3 - 1 - date.getDay() + 7) % 7 + 1);
var day = date.getDay();
var monthNames = ["January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December"];
var month = monthNames[date.getMonth()];
var year = date.getFullYear();
console.log(day, month, year);

但我再次得到今天的日期,我猜是因为我再次调用getDay / getMonth / getYear。我只想格式化返回到'date'变量的日期,但我无法弄清楚如何。我也不明白这个日期是如何计算的,因为我从另一个没有解释的问题中得出了它。

我希望它显示为'2016年2月10日'我也不想使用库。

2 个答案:

答案 0 :(得分:2)

您应该使用date.getDate()代替date.getDay()

所以你的代码应该是

var day = date.getDate();

getDay()方法根据本地时间返回指定日期的星期几,其中0代表星期日。

Date.prototype.getDay()

答案 1 :(得分:1)

Your expression to get the next Wednesday seems a bit convoluted, consider:

var x = 3 - date.getDay();
date.setDate(date.getDate() + (x > 0? x : 7 + x));

or if you really want to do it in one line:

date.setDate(date.getDate() + ((3 - date.getDay() + 7)%7 || 7));

If date is a Wednesday, this will return the next Wednesday (i.e. date plus 7 days).