gpt4 book ai didi

javascript - .net 日期时间转 JavaScript 日期

转载 作者:行者123 更新时间:2023-11-28 01:28:06 24 4
gpt4 key购买 nike

我有一个 MVC5 Web 应用程序作为我的时间记录应用程序的 Web 界面。我的 Android 应用程序将其时间作为字符串发送到服务器,在那里我将它们解析为 .NET DateTime 并将其存储在数据库中。当我再次加载时间记录并创建 JavaScript 数组时,我又增加了一小时。我已经尝试了很多,但这篇文章似乎解决了问题: stackoverflow

new Date(date.valueOf() + date.getTimezoneOffset() * 60000);

我的问题是:这是正确的做法吗?我不需要任何文化或时区来记录时间。从早上 6 点开始到下午 6 点结束的时间记录始终具有此值。实际上它甚至必须具有这个值!有没有办法告诉 JavaScript Date 它不应该对我的时间做任何事情?只保留我设置的值吗?

更新/扩展:我的网络界面是一个 MVC5 应用程序,与 Android 手机的通信是通过 WCF 服务完成的。为了使我上面发布的代码运行,我踢出了 JavaScriptSerializer 并使用 StringBuilder 编写了 JSON 数组。这使我可以包含上面发布的片段并让它在客户端上执行。我还尝试了所有 DateTime.Kind(本地、未指定和 UTC)与 JavascriptSerializer 的结合,但没有成功。

同样,我需要客户端未修改的日期时间。

根据马特的回答,我现在看到三个选择:

  1. 上面发布了我的代码
  2. 解析日期时间并为 GMT 附加 Z
  3. 在 Global.ascx Application_Start 中添加 SerializerSettings.DateTimeZoneHandling。

干杯,斯特凡

最佳答案

很难从问题中看出,但在存储日期时您需要使用协调世界时 (UTC) - 它只会让以后的工作更容易。 Javascript 日期都以本地时间工作,但如果服务器发送的是 UTC 时间,您可以轻松转换。

因此,如果服务器发送下来(例如以 JSON 格式),您的日期值将类似于 "2014-03-09T21:25:05.937Z" ,那么您可以使用以下方法在用户本地时间获取它:

var localDate = new Date(Date.parse("2014-03-09T21:25:05.937Z"))

这给出了localDate值为 Mon Mar 10 2014 10:25:05 GMT+1300 (New Zealand Daylight Time) (在我的时区)。

关键位是日期字符串末尾的“Z”。这将其标记为 Zulu-time/UTC ...从那里,javascript 可以很好地为您转换。

如果您使用的是 WebAPI,那么即使使用存储的本地日期,以下内容也应该有助于让事情顺利进行:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;

关于javascript - .net 日期时间转 JavaScript 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22466003/

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