使用 JavaScript,如何将类似于“Wed Jun 20 19:20:44 +0000 2012”这样的“人类时间”字符串转换为时间戳值,例如“1338821992”?
使用 JavaScript,如何将类似于“Wed Jun 20 19:20:44 +0000 2012”这样的“人类时间”字符串转换为时间戳值,例如“1338821992”?
只需使用该值创建一个 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理论上,使用Date.parse()
可以实现。但实际上,由于日期和时间的表示方式多种多样(包括不同语言中的星期和月份名称),将日期分解成其组成部分比尝试读取字符串要容易得多。
看起来您提供的日期/时间是以秒为单位而不是毫秒。因此,您需要除以1000才能获得以秒为单位的日期/时间。
//Gets date in seconds
var d1 = Date.parse('Wed Jun 20 19:20:44 +0000 2012')/1000;
alert(d1);
只需添加以下内容:
new Date().getTime()
这将获得当前时间戳。
例如:
var url = "http://abc.xyz.com/my-script.js?v=" + new Date().getTime();