gpt4 book ai didi

javascript - JSON.stringify 更改日期

转载 作者:行者123 更新时间:2023-11-30 12:18:00 25 4
gpt4 key购买 nike

我有一个网站,无论客户端的时区是什么,它都具有使用特定时区登录的功能。

现在,在网站中,当用户在对话框中选择日期时。我使用 JSON.stringify 和其他几个属性将其发送到服务器端。

但是只要在服务器端收到它,日期就会更改。

例子:-

我使用 (+05 : 30) 印度时区“01/08/2015 00:00:00”登录,服务器使用卡萨布兰卡时区。

当服务器端收到日期时,日期会减去一个“31/08/2015”。

我认为这是因为时区转换。

我已经检查了以下链接:-

JSON Stringify changes time of date because of UTC

我已经尝试过这个答案:- https://stackoverflow.com/a/1486612/2592727

但我无法理解该公式的工作原理。因此,最好获取更多详细信息并使用一些特定的解决方案。

要求:-

我只允许用户选择日期。我希望通过服务器端接收相同的日期。

我怎样才能做到这一点?如果可能,请描述更多细节。

有什么简单的方法可以避免这种碰撞吗?

最佳答案

JSON.stringify 方法将日期作为 UTC 存储在字符串中,当您在 .NET 中解析它时,您将获得包含完全相同点的 DateTime时间,但转换为服务器本地时间。

您可以通过两种方式处理此问题,您可以将时间转换回原始时区,也可以避免使用 Date 数据类型。

转换到原来的时区当然需要你知道时区是什么。示例:

var zone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
DateTime userTime = TimeZoneInfo.ConvertTimeFromUtc(date.ToUniversalTime(), zone);

为避免使用 Date 类型,您可以在序列化之前将日期格式化为字符串。示例:

var s = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();

在服务器端,您将使用相同的格式解析字符串:

DateTime userTime = DateTime.ParseExact(date, "yyyy-M-d", CultureInfo.InvariantCulture);

关于javascript - JSON.stringify 更改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31877535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com