将正常日期转换为 unix 时间戳

IT技术 javascript jquery date datetime unix-timestamp
2021-02-23 11:15:43

如何2012.08.10在javascript中将正常日期转换为unix时间戳?

小提琴:http : //jsfiddle.net/J2pWj/




我在这里看到了很多用 PHP、Ruby 等转换它的帖子......但我需要在 JS 中执行此操作。

6个回答
new Date('2012.08.10').getTime() / 1000

检查JavaScript 日期文档

为什么 Date.parse 给出不正确的结果?:stackoverflow.com/a/2587398/2714931
2021-04-16 11:15:43
Math.floor 它或它不是 unix 时间戳(它会有一个小数)
2021-05-07 11:15:43
@ user2584538,请看下面我的回答。您必须删除小数。
2021-05-07 11:15:43
@Mentor UNIX 时间以秒为单位,而不是毫秒
2021-05-10 11:15:43
@fguillen,Mooseman,我运行并检查此代码。一旦我将 unix 时间戳转换为日期,它就会给我 2012.08.09 而不是 2012.08.10。这是为什么..?
2021-05-13 11:15:43
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))

toFixed(0)在除以 1000 以从毫秒转换为秒时,添加以删除任何小数很重要

.getTime()函数以毫秒为单位返回时间戳,但真正的 unix 时间戳始终以秒为单位。

好点,将答案更改为用 parseInt() 包装以转换回整数。
2021-04-17 11:15:43
请注意,这会返回一个字符串,而不是一个数字。
2021-04-22 11:15:43
如果性能很重要,可能更好和更正确的选项是Math.roundor Math.floor,而不是转换为字符串然后再返回整数 - 即:Math.round(new Date('2012.08.10').getTime() / 1000)
2021-05-12 11:15:43

var d = '2016-01-01T00:00:00.000Z';
console.log(new Date(d).valueOf()); // returns the number of milliseconds since the epoch

您应该查看 moment.js api,它非常易于使用并且具有许多内置功能。

我认为对于您的问题,您可以使用以下方法:

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

在这种情况下,重要的是只返回一个整数(所以简单的除法不会做),并且只返回实际经过的秒数(这就是为什么这段代码使用Math.floor()而不是Math.round())。