【问题标题】:Best way to transfer datetimes between client and server (c# / javascript)在客户端和服务器之间传输日期时间的最佳方式(c#/javascript)
【发布时间】:2015-06-26 18:29:19
【问题描述】:

我在 goolge 和 stackoverflow 上搜索了这个,但找不到任何令人满意的答案。

我在日期时间和时区方面遇到了一些麻烦,我想知道在服务器 (c#) 和客户端 (javascript) 之间来回传输日期时间的最佳方法是什么忽略时区

我在服务器上使用 JavaScriptSerializer,在客户端使用 JSON.stringify。

目前我将日期转换为刻度。

任何建议表示赞赏。

【问题讨论】:

  • 您遇到了什么问题?在过去,我将日期转换为 UTC 并使用它
  • UTC 或 Unix 时间戳,如果你不低于 1970 年 1 月 1 日
  • @jasonscript 我的时区有问题,例如:如果服务器向具有不同时区的客户端发送日期时间,则客户端上的对象时间不同(时区的+/-小时差)
  • @RazvanDumitru 你能举个例子吗? UTC 在服务器 -> 客户端案例中的序列化过程中丢失。
  • 你需要看看这个的最佳方式?afana.me/post/aspnet-mvc-internationalization-date-time.aspx

标签: javascript c# datetime serialization


【解决方案1】:

实际上时间应该因时区不同而不同。当客户端在不同的时区反序列化日期时间时,小时(如果区域定义包括分钟,有时是分钟)和区域都会更改。如果您希望客户端在序列化之前获得相同的hoursminutes clear zone info

DateTime.SpecifyKind(date, DateTimeKind.Unspecified);

【讨论】:

  • 感谢您的回答 Slatin,我现在意识到我的问题是错误的。实际上它应该是 我如何将日期时间从 c# 转移到 javascript 尊重时区。当日期时间在 javascript 中反序列化时,时区会丢失。
  • 好吧,在这种情况下,这应该有助于stackoverflow.com/a/25105519/4573999。看起来在你的情况下你应该做与我想的相反的事情并将kind设置为local
  • 但是所有这些方法都假设您将 dateTime 视为 dateTime 而不是刻度,它不包含区域信息...
猜你喜欢
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2015-05-04
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多