[英]Get date ISO string without time in javascript
有没有办法在 javascript 中获取新日期类型的 ISO 字符串,时间为午夜,而无需重建带有日期部分的新日期或对其进行格式化?
我一直在尝试 这个
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
是否有内置的 function 或我一直试图获得所需的 output 的方法(用日期部分重建日期 object)?
var isoDate = new Date().toISOString().substring(0,10); console.log(isoDate);
只需使用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
将无法按预期工作,将您的日期更改为前一天的午夜。 因此,您首先需要将时区偏移量添加到日期。
如果您希望您的代码在逻辑上是持久的,那么基于硬编码索引的子字符串永远不会安全:
var iso = date.toISOString();
iso = iso.substring(0, iso.indexOf('T'));
import {format} from "date-fns-tz"
format(new Date(), 'yyyy-MM-dd')
一个班轮,没有第三方库:
const date = new Date().toISOString().split('T')[0]; // Ex: '2023-01-17'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.