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


104

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

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




我在这里看到过很多文章,可以将其转换为PHP,Ruby等。但是我需要在JS内完成。



1
您是否尝试过newDate.getTime()/ 1000?
加雷斯·帕克

@LokiAstari是的,很抱歉。我做了搜索,但没有找到。
Stan

1
也许我错过了一些东西,但是unix timestamp对所有工程学和计算机科学来说都是如此重要。希望有内置的便捷方法。目前,我正在使用Math.floor((+new Date()) / 1000);
火星罗伯逊

Answers:


209
new Date('2012.08.10').getTime() / 1000

查看JavaScript Date文档


1
感谢文档页面,我做了我想要的。
斯坦(Stan)2012年

32
Math.floor它或它不是unix时间戳(它将带有小数)
BT

@ fguillen,Mooseman,我运行并检查此代码。一旦我将unix时间戳转换为日期,它将给我2012.08.09而不是2012.08.10。这是为什么..?
WP Learner 2015年

@ user2584538,请参阅下面的答案。您必须删除小数。
theVinchi

1
@Mentor UNIX时间以秒为单位,而不
是以

59
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))

重要的是,添加时toFixed(0)要删除除1000之外的所有小数,以将毫秒转换为秒。

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


5
请注意,这将返回字符串,而不是数字。
卡帕杰

3
好点了,改变了答案,用parseInt()换行可以转换回整数。
theVinchi

11

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

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

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();

9

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


5

您可以简单地使用一元+运算符

(+new Date('2012.08.10')/1000).toFixed(0);

http://xkr.us/articles/javascript/unary-add/-在“日期”下查看。


2
只想在此处添加两个注释:不需要一元加+运算符,因为/已经是数学运算符。此外,toFixed返回字符串,而不是一个号码,如果类型是重要..
Laurens的


3
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

在这种情况下,重要的是仅返回一个整数(因此,简单的除法运算就不会做),并且仅返回实际经过的秒数(这就是该代码使用Math.floor()not 的原因Math.round())。


2

您可以使用Date.parse()方法执行此操作。

Date.parse($("#yourCustomDate).val())

Date.parse(“ 03.03.2016”)输出-> 1456959600000

Date.parse(“ 2015-12-12”)输出-> 1449878400000


1
这个答案与6年前Barmar给出的答案有何不同?
摩羯座

1
var datestr = '2012.08.10';
var timestamp = (new Date(datestr.split(".").join("-")).getTime())/1000;

1

将时间戳与PHP中的时间戳进行比较后,以上内容似乎都不适合我的时区。下面的代码给了我与PHP相同的结果,这对我正在做的项目来说最重要。

function getTimeStamp(input) {
    var parts = input.trim().split(' ');
    var date = parts[0].split('-');
	var time = (parts[1] ? parts[1] : '00:00:00').split(':');

	// NOTE:: Month: 0 = January - 11 = December.
	var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
	return d.getTime() / 1000;
}

// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');

console.log(start + ' - ' + end);

我在NodeJS上使用它,时区为'Australia / Sydney'。因此,我必须在.env文件上添加此代码:

TZ = 'Australia/Sydney'

以上相当于:

process.env.TZ = 'Australia/Sydney'

0

将时间戳转换为unix时间戳。

const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)

得到转换后的时间戳 const TimeStamp = new Date(date*1000).getTime(); //1513787412000

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.