JavaScript toISOString()设置用户输入日期前一天的日期?
当我试图转换用户输入的日期(如JavaScript toISOString()设置用户输入日期前一天的日期?,javascript,date,utc,isodate,Javascript,Date,Utc,Isodate,当我试图转换用户输入的日期(如05/13/1978时,我希望将ISO格式的日期发送到服务器,因为后端接受该日期 new Date('05/13/1978); 产出: Sat May 13 1978 00:00:00 GMT+0100 (British Summer Time) 这是预期的,但将转换为ISO日期,以便将POST发送到我需要调用.toISOString()的服务器,该服务器将输出: 1978-05-12T23:00:00.000Z 为什么用户输入恢复到1978年5月12日23:
05/13/1978
时,我希望将ISO格式的日期发送到服务器,因为后端接受该日期
new Date('05/13/1978);
产出:
Sat May 13 1978 00:00:00 GMT+0100 (British Summer Time)
这是预期的,但将转换为ISO日期,以便将POST
发送到我需要调用.toISOString()
的服务器,该服务器将输出:
1978-05-12T23:00:00.000Z
为什么用户输入恢复到1978年5月12日23:00
如果当用户
获取带有该值的响应时,该值存储在数据库中,它将在浏览器中输出05/13/1978
或05/12/1978
?05/13/1978
是一种非标准日期格式,处理将取决于实现,可能无法按预期工作。您应该使用显式构造函数将日期的不同部分作为数字传递,或者使用符合标准的字符串,这是ISO的一个变体。检查并注意时区的变化。这正是您在案例中看到的情况-假定字符串位于本地时区,但toISOString
返回UTC格式的字符串,UTC将根据时区偏移调整日期。如果你领先,那么时钟就会倒转,因此你在前一天从00:00+01:00
到23:00Z
。线索实际上在你的输出部分。时间包括1小时的英国夏令时。如果没有时间,实际的格林尼治标准时间/UTC/Z时间是前一天晚上11点。