所以我已经能够通过以下代码找到我需要的特定工作日日期(下一个即将到来的星期三):
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日'我也不想使用库。
答案 0 :(得分:2)
您应该使用date.getDate()
代替date.getDay()
所以你的代码应该是
var day = date.getDate();
getDay()方法根据本地时间返回指定日期的星期几,其中0代表星期日。
答案 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).