如何使用 Javascript 日期时区显示少一天

发布于 2025-01-20 11:43:20 字数 1063 浏览 1 评论 0原文

该应用程序位于葡萄牙,其时区为 UTC+00:00,但现在是夏令时。

这里我从Datepicker组件收到了一系列日期值,即'01/04/2022 - 01/05/2022'并以

 const handleCreationDateChange = (dateRange: {
    startDate: Date;
    endDate: Date;
  }) => {
    if (dateRange) {
      setCreationDate(dateRange);
    } else {
      setCreationDate(null);
    }
  };

此时的状态保存,日期范围对象是正确的,如下图

const payload = {
    creationDateFrom: dateRange.creationDateFrom,
    creationDateTo: dateRange.creationDateTo
}

< a href="https://i.sstatic.net/7QJ9i.png" rel="nofollow noreferrer">date range object

但发送到服务器的有效负载对象显示少了一天 日期范围object

对于巴西的用户,它显示正确的日期,但采用不同的时区 输入图片此处描述

我尝试转换为 .toIsoString() 然后转换回日期,但它不起作用,

这需要为来自不同时区的用户工作

The application is based in Portugal whose timezone is UTC+00:00 but now is daylight saving.

Here I received a range of date values from the Datepicker component, which was '01/04/2022 - 01/05/2022' and saved it in a state

 const handleCreationDateChange = (dateRange: {
    startDate: Date;
    endDate: Date;
  }) => {
    if (dateRange) {
      setCreationDate(dateRange);
    } else {
      setCreationDate(null);
    }
  };

at this point, the date range object is correct, like the image below

const payload = {
    creationDateFrom: dateRange.creationDateFrom,
    creationDateTo: dateRange.creationDateTo
}

date range object

but the payload object which was sent to the server shows less a day
date range object

for a user in Brasil, it shows the correct date but takes a different timezone
enter image description here

I've tried converting to .toIsoString() then converting back to Date but it didn't work

this needs to work for users from different timezones

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文