Javascript 我第二天怎么过';以YYYY-MM-DD格式在JS中的日期?
这似乎是个简单的问题,但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
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,我已经试过几次了