Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我第二天怎么过';以YYYY-MM-DD格式在JS中的日期?_Javascript_Date_Timezone_Timezone Offset - Fatal编程技术网

Javascript 我第二天怎么过';以YYYY-MM-DD格式在JS中的日期?

Javascript 我第二天怎么过';以YYYY-MM-DD格式在JS中的日期?,javascript,date,timezone,timezone-offset,Javascript,Date,Timezone,Timezone Offset,这似乎是个简单的问题,但JS中所有时区的输入和输出都让我头疼 基本上,如果我有如下日期: 2018-04-06 我希望能够获得第二天的日期: 2018-04-07 为此,我在SO上找到了以下代码片段(有点): 问题是我用调整后的时区返回日期,因为我在美国东部时区,它给我的日期减去五个小时,这实际上是我开始的同一天 我已经通过无数的SO帖子试图找到这个看似简单的问题的答案,但是对于任何给定的日期,无论用户所在的时区如何,我如何以YYYY-MM-DD格式获取第二天的日期?谢谢。您是否尝试过UTC

这似乎是个简单的问题,但JS中所有时区的输入和输出都让我头疼

基本上,如果我有如下日期:

2018-04-06
我希望能够获得第二天的日期:

2018-04-07
为此,我在SO上找到了以下代码片段(有点):

问题是我用调整后的时区返回日期,因为我在美国东部时区,它给我的日期减去五个小时,这实际上是我开始的同一天


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

您是否尝试过UTC日期

var日期=新日期('2018-04-06');
log(date.toutString());
date.setDate(date.getDate()+1);

log(date.toutString())您是否尝试使用UTC日期

var日期=新日期('2018-04-06');
log(date.toutString());
date.setDate(date.getDate()+1);

log(date.toutString())逻辑是在当前时间的基础上增加24小时(以毫秒为单位)。例如:

var myDate = new Date();
var oneMoreDay = new Date();
oneMoreDay.setTime(myDate.getTime() + 86400000);
console.log(myDate.getDate());
console.log(oneMoreDay.getDate());
已向oneMoreDay变量添加了额外的一天。在您的特定示例中,您只想向原始变量再添加一天,因此我将执行以下操作:

date.setTime(date.getTime() + 86400000);

逻辑是在当前时间的基础上增加24小时(以毫秒为单位)。例如:

var myDate = new Date();
var oneMoreDay = new Date();
oneMoreDay.setTime(myDate.getTime() + 86400000);
console.log(myDate.getDate());
console.log(oneMoreDay.getDate());
已向oneMoreDay变量添加了额外的一天。在您的特定示例中,您只想向原始变量再添加一天,因此我将执行以下操作:

date.setTime(date.getTime() + 86400000);

格式为YYYY-MM-DD的字符串被解析为UTC,因此在本例中,所有操作都使用UTC(请参阅和)

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

let s='2018-04-06';
设d=新日期;
d、 setUTCDate(d.getUTCDate()+1);

log(d.toISOString().substr(0,10))格式为YYYY-MM-DD的字符串被解析为UTC,因此在本例中,所有操作都使用UTC(请参阅和)

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

let s='2018-04-06';
设d=新日期;
d、 setUTCDate(d.getUTCDate()+1);

log(d.toISOString().substr(0,10))
正如@chrisbyte所建议的,您是否尝试使用
toutString
方法而不是
toString()
方法的

作为提示,
toString
是在控制台中显示
date
对象时使用的默认值

我认为您假设的“问题”只是不完全理解
Date.toString()
方法的行为:此方法似乎返回表示
Date
对象的字符串,但似乎使用了前面提到的时区(在第一个示例中的注释中)

下面是我的代码片段,以了解更多信息:

const originalDate=新日期('2018-04-06');
//检索原始时间戳
const originalTimestamp=originalDate.valueOf()的值
//显示原始日期(非UTC/UTC)
console.log(`原始日期(取决于时区):${originalDate.toString()}`)
console.log(`原始日期(独立于时区):${originalDate.toutString()}`)
//我们再加一天
originalDate.setDate(originalDate.getDate()+1)
const dayAfterTimestamp=originalDate.valueOf()的值
//显示原始日期(非UTC/UTC)
log(`updated date(取决于时区):${originalDate.toString()}`)
log(`updated date(独立于时区):${originalDate.toutString()}`)
//检查差异(以毫秒为单位)
log(`difference:${(dayAfterTimestamp originalTimestamp)}`)

//按照@chrisbyte的建议显示原始格式(与时区无关)
,您是否尝试使用
toutString
方法而不是
toString()
方法

作为提示,
toString
是在控制台中显示
date
对象时使用的默认值

我认为您假设的“问题”只是不完全理解
Date.toString()
方法的行为:此方法似乎返回表示
Date
对象的字符串,但似乎使用了前面提到的时区(在第一个示例中的注释中)

下面是我的代码片段,以了解更多信息:

const originalDate=新日期('2018-04-06');
//检索原始时间戳
const originalTimestamp=originalDate.valueOf()的值
//显示原始日期(非UTC/UTC)
console.log(`原始日期(取决于时区):${originalDate.toString()}`)
console.log(`原始日期(独立于时区):${originalDate.toutString()}`)
//我们再加一天
originalDate.setDate(originalDate.getDate()+1)
const dayAfterTimestamp=originalDate.valueOf()的值
//显示原始日期(非UTC/UTC)
log(`updated date(取决于时区):${originalDate.toString()}`)
log(`updated date(独立于时区):${originalDate.toutString()}`)
//检查差异(以毫秒为单位)
log(`difference:${(dayAfterTimestamp originalTimestamp)}`)

//显示原始格式(与时区无关)
感谢您的快速响应。这似乎解决了时区问题,但我得到了以下格式的字符串:
Sat,2018年4月7日00:00:00 GMT
。然后如何将其转换为YYYY-MM-DD格式?谢谢。你可以用得到不同的片段,然后按照你喜欢的方式重新格式化日期。displacedtexan,我已经试过几次了