有没有办法在午夜时间在javascript中获取新日期类型的ISO字符串,而无需使用日期部分重建新日期或格式化它?
我一直在尝试this
var date = new Date();
date.setHours(0, 0, 0, 0);
document.write(date.toISOString());
我正在接受这个
2017-04-20T04:00:00.000Z
我想得到这个
2017-04-20T00:00:00.000Z
是否有内置功能或方法,因为我一直试图获得所需的输出(使用日期部分重建日期对象)?
答案 0 :(得分:3)
只需使用setUTCHours
代替setHours
并补充时区:
var date = new Date();
var timezoneOffset = date.getMinutes() + date.getTimezoneOffset();
var timestamp = date.getTime() + timezoneOffset * 1000;
var correctDate = new Date(timestamp);
correctDate.setUTCHours(0, 0, 0, 0);
document.write(correctDate.toISOString())
setHours
将在您的本地时区设置时间,但是当您显示时,它将以UTC显示时间。如果您只是从头开始将其设置为UTC,您将获得所需的结果。
修改强>:
请注意,如果您setUTCHours
将无法正常工作,从而更改您的日期从前一天的午夜开始。因此,您首先需要将时区偏移量添加到日期。
答案 1 :(得分:1)
var date=new Date();
var corrected = date.toISOString().substring(0,10);
alert(corrected);
答案 2 :(得分:0)
答案 3 :(得分:-1)
如果您希望代码在逻辑上是持久的,那么基于硬编码索引的子字符串永远都不安全:
var iso = date.toISOString()
iso = iso.substr(0, iso.indexOf('T'))