13

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

4

4 回答 4

24

只需从中创建一个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
于 2012-06-23T20:11:40.570 回答
5

理论上,与Date.parse(). 然而,在实践中,使用数千种不同的方式来表示日期和时间(其中最少的是不同语言中的天/月名称),在其组成部分中获取日期要容易得多,而不是尝试阅读细绳。

于 2012-06-23T20:12:10.713 回答
0

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

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

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

于 2012-06-23T20:15:58.143 回答
0

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

这应该为您提供当前时间的时间戳。例子: var url = "http://abc.xyz.com/my-script.js?v=" + new Date().getTime();

于 2016-07-28T13:09:26.133 回答