我有一个字符串,其中包含代表日期的 8 位数字。例如:
20120515
我想将它与以这种方式创建的今天的日期进行比较:
var currentDate = new Date();
如何将“8 位日期字符串”转换为合适的日期格式以便与 currentDate 进行比较?
我有一个字符串,其中包含代表日期的 8 位数字。例如:
20120515
我想将它与以这种方式创建的今天的日期进行比较:
var currentDate = new Date();
如何将“8 位日期字符串”转换为合适的日期格式以便与 currentDate 进行比较?
使用 substring 方法和 substring 关闭 4 个元素并将其分配给您的新日期。然后一次子串出两个元素并相应地存储月份和日期。
var dateString = "20120515";
var year = dateString.substring(0,4);
var month = dateString.substring(4,6);
var day = dateString.substring(6,8);
var date = new Date(year, month-1, day);
var currentDate = new Date();
现在您可以使用普通运算符比较这两个日期。
如果您想要一个小型日期库,您可以使用moment.js。
var a = moment("20120515", "YYYYMMDD");
// then use any of moment's manipulation or display functionality
a.format("MMM Do YYYY"); // May 15th 2012
a.fromNow(); // 14 hours ago
a.calendar(); // Today at 12:00 AM
为了正确处理本地时区,它必须明确地与计算的时间相加
function dateStringToDate(dateString) {
try {
var year = dateString.substring(0, 4);
var month = dateString.substring(4, 6);
var day = dateString.substring(6, 8);
var date = new Date(year, month - 1, day);
const offset = date.getTimezoneOffset()
date = new Date(date.getTime() - (offset * 60 * 1000));
return date;
} catch (error) {
return null;
}
}
function dateStringToDate(dateString) {
try {
var year = dateString.substring(0, 4);
var month = dateString.substring(4, 6);
var day = dateString.substring(6, 8);
var date = new Date(year, month - 1, day);
const offset = date.getTimezoneOffset()
date = new Date(date.getTime() - (offset * 60 * 1000));
return date;
} catch (error) {
return null;
}
}
console.log(dateStringToDate("20211212"))
console.log(dateStringToDate("20211213"))
console.log(dateStringToDate("20211214"))