javascript - 如何在 Javascript 中根据星期几的名称获取日期?
问题描述
假设我有一周中某一天的名称,例如'Wednesday'
or 'Monday'
,有没有办法获得与一周中给定日期相关的月份日期?
例如,在下面给定的日历中,有没有办法获取[2,9,16,23,30]
2020 年 9 月“星期三”这一天的日期?只要解决方案返回给定日期的正确日期,解决方案就不必完全匹配:
解决方案
试试这个
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, mm, d);
return mm === date.getMonth() && dayNumber === date.getDay()
});
};
console.log(
getDates(2020, 9, "Wednesday")
)
console.log(
getDates(2020, 9, "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", "Wednesday")
)
console.log(
getDates(2020, "August", "Monday")
);
推荐阅读
- r - 如何从 HTML 代码中提取特定的数字字符串?
- python - 如何从 Python 中的列表中删除字符串
- javascript - 在 Mapbox GLJS 中向 swipetool 添加一个额外的层?
- go - go中的字数
- microsoft-teams - Microsoft 团队频道删除事件侦听器
- javascript - 如何正确处理 jquery 事件绑定?
- r - 通过多个键对行进行分组并获得分类的数值和模式的平均值
- python - 使用集合文字更快地设置包含
- c# - 使用 Serilog 将数据添加到 SQL Server 中的新列
- c++ - SHCreateDataObject/IDataObject 在 CDefView::OnBeginDrag 期间表现出奇怪的行为