【问题标题】:toISOString() is subtracting day from valuetoISOString() 正在从值中减去天
【发布时间】:2020-10-21 16:26:33
【问题描述】:

我有这种日期格式: 2020 年 10 月 20 日星期二 00:00:00 GMT+0100(中欧标准时间)

当我这样做时:

myValue.toISOString();

这就是我得到的

2020-10-19T23:00:00.000Z

减去一天。

如何在不更改日期格式的情况下解决此问题?

【问题讨论】:

标签: javascript angular typescript toisostring


【解决方案1】:

toISOString() 方法返回简化扩展 ISO 格式 (ISO 8601) 的字符串,该字符串的长度始终为 24 或 27 个字符(YYYY-MM-DDTHH:mm:ss.sssZ 或 ±YYYYYY-MM-DDTHH:mm :ss.sssZ,分别)。时区始终为零 UTC 偏移量,由后缀“Z”表示。

由于您当前的时区(中欧标准时间)是 GMT+1,这就是您使用第 1 天时间的原因。这实际上只是UTC当前时间。您所在的地区比 UTC 早一小时。如果您在一天中的不同时间查看,这将不是一天的差异,而是一小时的差异。

【讨论】:

  • 那我该怎么办?
  • 在将时间显示给用户到用户时区时,您应该标准化您的时间。 ISO 时间将是 UTC 时间。这就是你应该节省的时间。然后根据用户时区显示时间。
【解决方案2】:
let date = new Date('Tue Oct 20 2020 00:00:00 GMT+0100');
console.log('date: ' + JSON.stringify(date));
let result = date.toLocaleDateString("fr-CA",{year:"numeric", month:"2-digit", day:"2-digit"});
console.log('result: ' + JSON.stringify(result));

日期:“2020-10-19T23:00:00.000Z”

结果:“2020-10-20”

【讨论】:

  • 它正在工作,但我必须以 iso 格式将日期发送到我的后端
猜你喜欢
  • 2013-02-06
  • 2012-06-24
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
相关资源
最近更新 更多