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

新手上路,请多包涵

问题简述:

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

由于更多的观点在顶部添加了明确的问题,所以如果需要快速帮助,则无需浏览背景和所有内容。


背景 :

我有一个简单的 html 表,我使用 jquery sorter 对我的表列进行排序。

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

 17-09-2013 10:08
date-month-year hour(24):minute

此专栏正在排序(按字母顺序),但不像我预期的那样(按日期排序)。我尝试如下使用自定义解析器,

 $.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'
});

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

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

谢谢

编辑:

很抱歉关于 milliseconds 的混淆,实际上它应该是 timestamp 这是一个代表当前时间和日期的数字。

原文由 Janith Chinthana 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 317
2 个回答

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

 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

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

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

原文由 plalx 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

所以,只需使用

var timeInMillis = Date.parse(s);

代替

var timeInMillis = new Date.parse(s);

原文由 Rémi Becheras 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题