如何在 Javascript 中获取给定年份和星期的月份名称
How to get month name for a given year and week in Javascript
我在 HTML 中有 2 个表单域,即 Year 和 Week。
一旦用户从下拉列表中选择了年和周,我想显示所选年和周的月份名称。
任何人都可以帮助我根据年份和 iso 周数获取月份名称。
例如:如果我选择年份为 2022 年,第 16 周为第 16 周,则预期输出为 April
作为月份名称。
这应该是一个函数,returns 给定年份和星期的月份名称。
下面是我的示例代码。
getMonthName() {
const year = 2022;
const week = 16;
console.log(month);
}
示例:https://codesandbox.io/s/damp-wood-nynj7f?file=/src/app/app.component.ts
- 为您的月份创建映射器:
- 4 周 = 1 个月,然后将周的输入值转换为数字并除以 4。(示例:16 / 4 === 4)
- 结果是你的mapper的key: months[divided result]
最好是使用 Date 库,例如:dayjs、date-fns、moment、luxon 或其他。
const months = {
1: "January",
2: "February"
}
changeWeekHandler(e) {
const week = parseInt(e.target.value)
const month = Math.ceil(week / 4) // for round number to the upper (example: Math.ceil(0.25) -> 1)
this[your input field] = months[month]
}
非常有趣的形式。我想到了这样的解决方案;
我不建议您每月除以 4 周,因为并非所有月份都有 4 周。
但是根据您的输入,您总是可以从数周中知道一年中的第几天
周数 * 7 = 日数
创建一个方法:
const dateFromDay = (year, day = 1) => {
const date = new Date(year, 0);
return new Date(date.setDate(day));
}
// call the method with your inputs
const myDate = edateFromDay(2022,16*7);
// here you will have the full date
// if you want just the month then
myDate.getMonth();
完全满足您的需求:
//Declare months
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
// Declare method for receiving your month name
const dateFromWeek = (year, week = 1) => {
const date = new Date(year, 0);
return monthNames[new Date(date.setDate(week*7)).getMonth()];
}
//When you use
dateFromWekk(2020,3); //just write year and week, you will get the name of month
以下将显示给定 ISO 周数和年份的月份名称(缩写形式)。
function getMonthName(week, year) {
let d =new Date(year,0,1+(week-1)*7);
d.getUTCDay()<5?d.setUTCDate(d.getUTCDate()-d.getUTCDay()+1):d.setUTCDate(d.getUTCDate()+8-d.getUTCDay());
return (""+d).split(" ")[1];
}
console.log(getMonthName(1,2022));
console.log(getMonthName(11,2022));
console.log(getMonthName(16,2022));
我在 HTML 中有 2 个表单域,即 Year 和 Week。
一旦用户从下拉列表中选择了年和周,我想显示所选年和周的月份名称。
任何人都可以帮助我根据年份和 iso 周数获取月份名称。
例如:如果我选择年份为 2022 年,第 16 周为第 16 周,则预期输出为 April
作为月份名称。
这应该是一个函数,returns 给定年份和星期的月份名称。
下面是我的示例代码。
getMonthName() {
const year = 2022;
const week = 16;
console.log(month);
}
示例:https://codesandbox.io/s/damp-wood-nynj7f?file=/src/app/app.component.ts
- 为您的月份创建映射器:
- 4 周 = 1 个月,然后将周的输入值转换为数字并除以 4。(示例:16 / 4 === 4)
- 结果是你的mapper的key: months[divided result]
最好是使用 Date 库,例如:dayjs、date-fns、moment、luxon 或其他。
const months = {
1: "January",
2: "February"
}
changeWeekHandler(e) {
const week = parseInt(e.target.value)
const month = Math.ceil(week / 4) // for round number to the upper (example: Math.ceil(0.25) -> 1)
this[your input field] = months[month]
}
非常有趣的形式。我想到了这样的解决方案;
我不建议您每月除以 4 周,因为并非所有月份都有 4 周。 但是根据您的输入,您总是可以从数周中知道一年中的第几天
周数 * 7 = 日数
创建一个方法:
const dateFromDay = (year, day = 1) => {
const date = new Date(year, 0);
return new Date(date.setDate(day));
}
// call the method with your inputs
const myDate = edateFromDay(2022,16*7);
// here you will have the full date
// if you want just the month then
myDate.getMonth();
完全满足您的需求:
//Declare months
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
// Declare method for receiving your month name
const dateFromWeek = (year, week = 1) => {
const date = new Date(year, 0);
return monthNames[new Date(date.setDate(week*7)).getMonth()];
}
//When you use
dateFromWekk(2020,3); //just write year and week, you will get the name of month
以下将显示给定 ISO 周数和年份的月份名称(缩写形式)。
function getMonthName(week, year) {
let d =new Date(year,0,1+(week-1)*7);
d.getUTCDay()<5?d.setUTCDate(d.getUTCDate()-d.getUTCDay()+1):d.setUTCDate(d.getUTCDate()+8-d.getUTCDay());
return (""+d).split(" ")[1];
}
console.log(getMonthName(1,2022));
console.log(getMonthName(11,2022));
console.log(getMonthName(16,2022));