我已提到链接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位数时间戳的可能解决方案。
答案 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)