如何获取 JS 中 YYYY-MM-DD 格式的第二天日期?

Har*_*San 1 javascript timezone date timezone-offset

看起来是一个简单的问题,但是 JS 中所有时区的来龙去脉都让我很头疼。

基本上,如果我有一个如下所示的日期:

2018-04-06
Run Code Online (Sandbox Code Playgroud)

我希望能够获得第二天的日期:

2018-04-07
Run Code Online (Sandbox Code Playgroud)

我在 SO 上找到了以下代码片段来执行此操作(有点):

var date = new Date('2018-04-06');
date.setDate(date + 1);
Run Code Online (Sandbox Code Playgroud)

问题是我正在使用调整后的时区返回日期,并且因为我位于美国东部时间时区,所以它给我的日期减去五个小时,这实际上是我开始的同一天。

我已经浏览了无数的 SO 帖子,试图找到这个看似简单问题的答案,但对于任何给定的日期,无论用户位于哪个时区,如何以 YYYY-MM-DD 格式获取第二天的日期?谢谢。

Rob*_*obG 5

YYYY-MM-DD 格式的字符串被解析为 UTC,因此在这种情况下,请以 UTC 格式执行所有操作(请参阅为什么 Date.parse 给出不正确的结果?以及如何向当前日期添加 1 天?)。

toISOString方法返回所需格式的字符串,只需修剪多余的时间部分,例如

let s = '2018-04-06';
let d = new Date(s);
d.setUTCDate(d.getUTCDate() + 1);
console.log(d.toISOString().substr(0,10));
Run Code Online (Sandbox Code Playgroud)