35

我有一个字符串,其中包含代表日期的 8 位数字。例如:

20120515

我想将它与以这种方式创建的今天的日期进行比较:

var currentDate = new Date();

如何将“8 位日期字符串”转换为合适的日期格式以便与 currentDate 进行比较?

4

3 回答 3

55

使用 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();

现在您可以使用普通运算符比较这两个日期。

于 2012-05-15T20:40:21.927 回答
23

如果您想要一个小型日期库,您可以使用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
于 2012-05-16T00:12:16.207 回答
0

为了正确处理本地时区,它必须明确地与计算的时间相加

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"))

于 2021-12-13T09:37:38.783 回答