0

我的申请有问题。我以这种格式显示日期 DD/MM/YYYY 示例 09/07/2020。但是问题出在我的表单中,如果居住在留尼汪岛的用户输入日期 10/07/2020(今天的日期加上一天),居住在法国的用户看到的是 09/07/2020。

如何在 javascript 中让居住在任何地方的用户输入相同的日期。

我想要这个:居住在留尼汪岛的用户进入 10/07/2020,居住在法国的用户看到 10/07/2020

4

2 回答 2

0

如果您想保存绝对日期,我建议您使用类似的库moment-timezone并将日期保存为 utc。为了做到这一点,你应该做两件事:

  1. 在将日期发送到服务器之前以 UTC 格式设置日期:
const parseDateBeforeSend = (selectedDate) => {
 const parsedDate = moment(selectedDate).tz('utc', true).startOf('day').toDate()
 return parsedDate
}
  1. 在将日期显示给用户之前将其转换为 UTC:
const showDate = (date) => {
  const parsedDate = moment(date).tz('utc').format("DD/MM/YYYY")
  return parsedDate
}

供您参考:tz在步骤 1 中使用函数时,您可以看到它的第二个参数设置为 true,这样做是为了保持原始时间并仅更新时区。这将保留您要显示的原始日期。在第二步中,我们省略了这个参数,因为我们想显示保存在 utc 中的实际日期。

于 2020-07-09T13:19:48.230 回答
0

这是JS中经常出现的问题,解决起来并不容易,因为Date在JS中存储为本地时间。

您可以使用 ISO 字符串输入您的时间:YYYY-MM-DDTHH:mm:ss.sssZ. 执行这个:

new Date('2020-01-01T00:00:00.000Z')

将给出相同的结果。

如果可以的话,我会建议你使用Moment.js,如果你打算进行日期操作,它将为你节省很多精力。

于 2020-07-09T13:17:00.333 回答