如何将格式为“YYYY-MM-DD hh:mm:ss”(例如"2011-07-15 13:18:52"
)的时间转换为UNIX时间戳?
我尝试了这段JavaScript代码:
date = new Date("2011-07-15").getTime() / 1000
alert(date)
它可以工作,但是当我将time('2011-07-15 13:18:52')添加到输入中时,它会导致NaN
。
如何将格式为“YYYY-MM-DD hh:mm:ss”(例如"2011-07-15 13:18:52"
)的时间转换为UNIX时间戳?
我尝试了这段JavaScript代码:
date = new Date("2011-07-15").getTime() / 1000
alert(date)
它可以工作,但是当我将time('2011-07-15 13:18:52')添加到输入中时,它会导致NaN
。
使用长日期构造函数,并指定所有日期/时间组件:
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);
以下代码适用于格式为YYYY-MM-DD hh:mm:ss
的日期时间:
function parse(dateAsString) {
return new Date(dateAsString.replace(/-/g, '/'))
}
这段代码将 YYYY-MM-DD hh:mm:ss
转换为易于解析的 YYYY/MM/DD hh:mm:ss
,以便能够被 Date
构造函数轻松解析。
您已经接受了一个答案,但是可以使用更简单的正则表达式:
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'));
月份从0开始计算,不同于日期!所以这将完美地工作(已测试)
function dateToUnix(year, month, day, hour, minute, second) {
return ((new Date(Date.UTC(year, month - 1, day, hour, minute, second))).getTime() / 1000.0);
}
这将返回自1970年1月1日以来的毫秒数:
Date.parse('2011-07-15 10:05:20')
只需将其除以1000即可获得秒而不是毫秒。