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

How to get date for specific weekday and then format

本文关键字:工作日 日期 格式化 然后 何获取 获取      更新时间:2023-09-26

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

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 日"我也不想使用库。

你应该使用date.getDate()而不是date.getDay()

所以你的代码应该是

var day = date.getDate();

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

Date.prototype.getDay()

你得到下周三的表达似乎有点复杂,考虑一下:

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

或者,如果您真的想在一行中完成:

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

如果日期是星期三,这将返回下一个星期三(即日期加 7 天)。