将返回的字符串(YYYYMMDD)转换为Date

kir*_*son 23 javascript datetime

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

20120515
Run Code Online (Sandbox Code Playgroud)

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

var currentDate = new Date();
Run Code Online (Sandbox Code Playgroud)

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

小智 41

使用子字符串方法和子字符串关闭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();
Run Code Online (Sandbox Code Playgroud)

现在,您可以将两个日期与普通运算符进行比较.

  • Date 构造函数的月份参数是从零开始的。您计算的日期是 2012 年 6 月 14 日,而不是 5 月。一年后我成为第一个注意到这一点的人,我感到很惊讶。我改变了你的代码。 (2认同)

tim*_*ood 18

如果你想要一个小的日期库,你可以使用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
Run Code Online (Sandbox Code Playgroud)