如何将日期格式为"YYYY-MM-DD hh:mm:ss"转换为UNIX时间戳

Ama*_*r S 8 javascript datetime timestamp date unix-timestamp

如何将格式为"YYYY-MM-DD hh:mm:ss"(例如"2011-07-15 13:18:52")的时间转换为UNIX时间戳?

我试过这段Javascript代码:

date = new Date("2011-07-15").getTime() / 1000
alert(date)
Run Code Online (Sandbox Code Playgroud)

并且它有效,但是NaN当我向输入添加时间('2011-07-15 13:18:52')时,它会产生.

Sal*_*n A 17

使用长日期构造函数并指定所有日期/时间组件:

var match = '2011-07-15 13:18:52'.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/)
var date = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6])
// ------------------------------------^^^
// month must be between 0 and 11, not 1 and 12
console.log(date);
console.log(date.getTime() / 1000);
Run Code Online (Sandbox Code Playgroud)


Gin*_*den 14

以下代码适用于格式YYYY-MM-DD hh:mm:ss:

function parse(dateAsString) {
    return new Date(dateAsString.replace(/-/g, '/'))
}
Run Code Online (Sandbox Code Playgroud)

此代码转换YYYY-MM-DD hh:mm:ss,以YYYY/MM/DD hh:mm:ss易于被解析Date构造.


Rob*_*obG 6

您已经接受了答案,但可以使用更简单的正则表达式:

function stringToDate(s)  {
  s = s.split(/[-: ]/);
  return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]);
}

alert(stringToDate('2011-7-15 20:46:3'));
Run Code Online (Sandbox Code Playgroud)

当然输入字符串必须是正确的格式.