在Javascript中将日期时间字符串转换为时间戳

Jan*_*ana 21 javascript jquery

问题简述:

转换date-month-year hour(24):minute为最简单的方法是什么timestamp

由于更多的观点在顶部添加了明确的问题,所以如果需要快速帮助,无需通过背景和所有.


背景 :

我有一个简单的html表,我使用jquery排序器来排序我的表列.

一切都工作正常,除了日期列具有以下格式的数据,

17-09-2013 10:08
date-month-year hour(24):minute
Run Code Online (Sandbox Code Playgroud)

此列按字母顺序排序,但不是我预期的排序(日期明确).我尝试使用自定义解析器,如下所示,

$.tablesorter.addParser({ 
    id: 'date_column',  // my column ID
    is: function(s) { 
        return false; 
    }, 
    format: function(s) { 
        var timeInMillis = new Date.parse(s);
        return timeInMillis;         
    }, 
    type: 'numeric' 
}); 
Run Code Online (Sandbox Code Playgroud)

问题: 由于失败而失败new Date.parse(s).

问题: 转换date-month-year hour(24):minute为时间戳的最简单方法是什么?然后我可以跳过var timeInMillis = new Date.parse(s);线.

谢谢

编辑:

对于混淆感到抱歉milliseconds,实际上它应该是timestamp代表当前时间和日期的数字.

pla*_*alx 34

解析日期是JavaScript的一个难点,因为没有广泛的本机支持.但是,依靠对象的Date(year, month, day [, hour, minute, second, millisecond])构造函数签名,您可以执行以下操作Date.

var dateString = '17-09-2013 10:08',
    dateTimeParts = dateString.split(' '),
    timeParts = dateTimeParts[1].split(':'),
    dateParts = dateTimeParts[0].split('-'),
    date;

date = new Date(dateParts[2], parseInt(dateParts[1], 10) - 1, dateParts[0], timeParts[0], timeParts[1]);

console.log(date.getTime()); //1379426880000
console.log(date); //Tue Sep 17 2013 10:08:00 GMT-0400
Run Code Online (Sandbox Code Playgroud)

您还可以使用带有捕获组的正则表达式来解析一行中的日期字符串.

var dateParts = '17-09-2013 10:08'.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/);

console.log(dateParts); // ["17-09-2013 10:08", "17", "09", "2013", "10", "08"]
Run Code Online (Sandbox Code Playgroud)


Rém*_*ras 10

Date.parse() 不是构造函数,它是一个静态方法.

所以,只需使用

var timeInMillis = Date.parse(s);
Run Code Online (Sandbox Code Playgroud)

代替

var timeInMillis = new Date.parse(s);
Run Code Online (Sandbox Code Playgroud)

  • `Date.parse()` 是最好的解决方案。它适用于各种情况。 (2认同)

小智 7

似乎问题是日期格式.

 var d = "17-09-2013 10:08",
 dArr = d.split('-'),
 ts = new Date(dArr[1] + "-" + dArr[0] + "-" + dArr[2]).getTime(); // 1379392680000
Run Code Online (Sandbox Code Playgroud)