如何解决如何在Javascript中使用星期几的名称获取日期?
假设我有星期几的名字,例如'Wednesday'
或'Monday'
,是否可以获取与星期几相关的月份日期?>
例如,在下面的给定日历中,是否有办法获取2020年9月“星期三”当天的日期[2,9,16,23,30]
?只要返回给定日期的正确日期,解决方案就不必与此完全匹配:
解决方法
一起去
const dayNames = "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),days = [...Array(32).keys()].splice(1); // generate 1-31
const getDates = (yyyy,mm,dayName) => {
const dayNumber = dayNames.indexOf(dayName);
mm -= 1; // JS months start at 0
return days.filter(d => {
const date = new Date(yyyy,d);
return mm === date.getMonth() && dayNumber === date.getDay()
});
};
console.log(
getDates(2020,9,"Wednesday")
)
console.log(
getDates(2020,"Monday")
)
/* Without the need for a dayName array but needing the month name as input
**NOTE** this was more for my own entertainment - the date constructor may fail on some browsers that does not like `new Date("Monday,August 31")` such as Safari
*/
const fm = new Intl.DateTimeFormat('en-US',{dateStyle:"full"}),days = [...Array(32).keys()].splice(1); // generate 1-31
const getDates = (yyyy,monthName,dayName) => {
const mn = monthName.slice(0,3);
return days.filter(d => {
const [,dn,month,day] = fm.format(new Date(`${mn} ${d},${yyyy}`)).match(/(\w+?),(\w+?) (\d+?),/)
return dayName===dn && monthName === month;
});
};
console.log(
getDates(2020,"September","August","Monday")
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。