Max*_*mus 10 javascript time date isodate
有没有办法在没有用日期部分重建新日期或格式化它的情况下在 javascript 中获取新日期类型的 ISO 字符串和午夜时间?
我一直在尝试这个
var date = new Date();
date.setHours(0, 0, 0, 0);
document.write(date.toISOString());
Run Code Online (Sandbox Code Playgroud)
我得到了这个
2017-04-20T04:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
我想得到这个
2017-04-20T00:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
是否有我一直在尝试的内置函数或方法来获得所需的输出(使用日期部分重建日期对象)?
小智 15
var isoDate = new Date().toISOString().substring(0,10);
console.log(isoDate);Run Code Online (Sandbox Code Playgroud)
Ale*_*urt 13
如果您希望代码在逻辑上持久,那么基于硬编码索引的子字符串永远不安全:
var iso = date.toISOString();
iso = iso.substring(0, iso.indexOf('T'));
Run Code Online (Sandbox Code Playgroud)
只需使用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())Run Code Online (Sandbox Code Playgroud)
setHours将在您的本地时区设置时间,但是当您显示它时,它将以 UTC 显示时间。如果您从一开始就将其设置为 UTC,您将得到您想要的结果。
编辑:
请注意,如果您早于 UTC,您的日期将存储为前一天的 UTC 日期,因此运行setUTCHours将无法按预期工作,将您的日期更改为前一天的午夜。因此,您首先需要将时区偏移量添加到日期。
一个衬垫,没有第三方库:
const date = new Date().toLocaleString('sv').split(' ')[0]; // Ex: '2023-01-17'
Run Code Online (Sandbox Code Playgroud)
这是利用瑞典的日期格式
编辑:下面的旧答案,在乔恩关于考虑时区的评论之前
const date = new Date().toISOString().split('T')[0]; // Ex: '2023-01-17'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17150 次 |
| 最近记录: |