编程语言
首页 > 编程语言> > 在JavaScript中获取日期ISO字符串而无需时间

在JavaScript中获取日期ISO字符串而无需时间

作者:互联网

有没有一种方法可以在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

我一直试图获得所需的输出(通过使用日期部分重建日期对象)是否有内置函数或方式?

解决方法:

只需使用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,您将获得所需的结果.

编辑:

请注意,如果您早于UTC,则您的日期将存储为前一天的UTC日期,因此运行setUTCHours不能按预期工作,将您的日期更改为前一天的午夜.因此,您首先需要将时区偏移量添加到日期.

标签:isodate,javascript,date,time
来源: https://codeday.me/bug/20191026/1933522.html