如何获得10位数的时间戳

时间:2018-05-09 06:51:44

标签: javascript datetime

我已提到链接javascript getTime() to 10 digits only。我知道了将日期转换为10位数时间戳的方法。我的要求是我想要上个月的日期时间戳。以下是我尝试过的代码:

var date = new Date();
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
var monthLastDay = Math.floor(lastDay.getTime()/1000);
console.log(monthLastDay);

当我运行上面的代码时,我得到输出:1527705000。当我检查https://www.unixtimestamp.com/index.php上的输出时。我得到了

1527705000
Is equivalent to:
05/30/2018 @ 6:30pm (UTC)

我认为这是不正确的,因为05月有31天。所以我应该把时间戳记为05/31/2018。

修改

如果我尝试使用以下代码:

var date = new Date('6/8/2018');
var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
var lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
var monthLastDay = Math.floor(lastDay.getTime()/1000);
console.log(monthLastDay);

我得到输出:1530297000,等于6/29/2018。但输出应该是6/30/2018。

让我知道获得正确的10位数时间戳的可能解决方案。

1 个答案:

答案 0 :(得分:1)

我想问题出在你的时区。

> new Date('6/8/2018')
Fri Jun 08 2018 00:00:00 GMT+0200 (CEST)
> new Date('6/8/2018').getTime()
1528408800000 // which is 06/07/2018 @ 10:00pm (UTC)

如果要按原样使用时间戳,则应以UTC格式构建日期

> var date = new Date('6/8/2018');
> Date.UTC(date.getFullYear(), date.getMonth() + 1, 0);
1530316800000 // which is 06/30/2018 @ 12:00am (UTC)