JavaScript 将人类时间转换为时间戳

13

使用 JavaScript,如何将类似于“Wed Jun 20 19:20:44 +0000 2012”这样的“人类时间”字符串转换为时间戳值,例如“1338821992”?


你能详细说明一下你想做什么吗?你是如何获取这个字符串的? - gdoron
4个回答

25

只需使用该值创建一个 Date 对象,然后使用.getTime()或者Date.parse()方法即可:

var d = new Date("Wed Jun 20 19:20:44 +0000 2012");
d.getTime(); //returns 1340220044000

//OR

Date.parse("Wed Jun 20 19:20:44 +0000 2012"); //returns 1340220044000

如果你的“人类时间”字符串是Date构造函数理解的格式(例如你所发布的示例),那么这个方法非常有效。


编辑

注意到你可能指的是Unix时间戳,它是自纪元以来经过的秒数(而不是JS时间戳中的毫秒)。在这种情况下,只需将JS时间戳除以1000即可:

//if you want to truncate ms instead of rounding just use Math.floor()
Math.round(Date.parse("Wed Jun 20 19:20:44 +0000 2012") / 1000); //returns 1340220044

在这两个方面都是NaN。这是由于区域设置的原因,也正是解析人类字符串成为问题的根源所在。 - Niet the Dark Absol

5

理论上,使用Date.parse()可以实现。但实际上,由于日期和时间的表示方式多种多样(包括不同语言中的星期和月份名称),将日期分解成其组成部分比尝试读取字符串要容易得多。


1

看起来您提供的日期/时间是以秒为单位而不是毫秒。因此,您需要除以1000才能获得以秒为单位的日期/时间。

//Gets date in seconds 
var d1 = Date.parse('Wed Jun 20 19:20:44 +0000 2012')/1000;
alert(d1);

示例:http://jsfiddle.net/AUt9K/


1

只需添加以下内容: new Date().getTime()

这将获得当前时间戳。 例如: var url = "http://abc.xyz.com/my-script.js?v=" + new Date().getTime();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接