如何在 Javascript 中进行日期舍入?
How to do date rounding in Javascript?
我有一组日期,我想将它们四舍五入到不同的频率 - 周、月、季度和年。相当于四舍五入的数字,但用于日期。
这是一个示例数组:
const dates = [
"1/4/2020",
"2/5/2021",
"8/15/2021",
];
按月四舍五入将得出:
[
"1/31/2020",
"2/28/2021",
"8/31/2021",
];
最近的年份:
[
"12/31/2020",
"12/31/2021",
"12/31/2021",
];
等等。是否有允许这种舍入的 Javascript 库?如果没有,是否有一个简单的函数可以涵盖上述频率?我可以为每个用例编写一个自定义函数,但这可能效率不高。
假设您的第一个日期数组中存在拼写错误,并且“2/5/2020”应该是“2/5/2021”(这可以解释您想要的结果),此代码应该有效:
function roundMonth(dateString) {
var date = new Date(Date.parse(dateString));
var year = date.getFullYear();
var month = date.getMonth();
var date = new Date(year, month + 1, 0);
// day 0 yields the last day of the previous month,
// so we add 1 to the month value
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var date = [month + 1,day,year].join("/");
// for string output we add 1 to month since Jan is month 0
return date;
}
function roundYear(dateString) {
var date = new Date(Date.parse(dateString));
var year = date.getFullYear();
var date = [12,31,year].join("/");
return date;
}
我有一组日期,我想将它们四舍五入到不同的频率 - 周、月、季度和年。相当于四舍五入的数字,但用于日期。
这是一个示例数组:
const dates = [
"1/4/2020",
"2/5/2021",
"8/15/2021",
];
按月四舍五入将得出:
[
"1/31/2020",
"2/28/2021",
"8/31/2021",
];
最近的年份:
[
"12/31/2020",
"12/31/2021",
"12/31/2021",
];
等等。是否有允许这种舍入的 Javascript 库?如果没有,是否有一个简单的函数可以涵盖上述频率?我可以为每个用例编写一个自定义函数,但这可能效率不高。
假设您的第一个日期数组中存在拼写错误,并且“2/5/2020”应该是“2/5/2021”(这可以解释您想要的结果),此代码应该有效:
function roundMonth(dateString) {
var date = new Date(Date.parse(dateString));
var year = date.getFullYear();
var month = date.getMonth();
var date = new Date(year, month + 1, 0);
// day 0 yields the last day of the previous month,
// so we add 1 to the month value
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var date = [month + 1,day,year].join("/");
// for string output we add 1 to month since Jan is month 0
return date;
}
function roundYear(dateString) {
var date = new Date(Date.parse(dateString));
var year = date.getFullYear();
var date = [12,31,year].join("/");
return date;
}