gpt4 book ai didi

timezone - MVC 处理时区和 JSON 序列化 - 如何转换为特定时区

转载 作者:行者123 更新时间:2023-12-02 01:51:37 25 4
gpt4 key购买 nike

我在 stackoverflow 和互联网上花了很多时间,试图确定在我的情况下做了什么。我正在 build 一个可以跨越多个时区的集中式业务线网站。根据这里的一些有值(value)的信息,我制定了一个计划来处理这个问题。

现在是我不知道如何解决的问题。 Kendo UI 使用 JSON 来回传递信息,据我所知,JSON.net 序列化程序无法将日期序列化为特定时区。我可以将日期序列化为 UTC 或让 JSON.net 使用 DateTimeZoneHandling 设置自动将其转换为本地时间,但这将是服务器上的本地时间。通过查看 JSON.net 代码,我不确定我什至可以编写一个转换器来执行我想要的操作。到目前为止,如果我通过 JSON.net 将日期作为 UTC 发送,Kendo 会自动将时间转换为浏览器的本地时区。

假设用户配置文件时区 = 浏览器时区对我来说似乎有点可怕,我想看看 stackoverflow 建议我做什么。提前谢谢你。

技术

ASP.net MVC 5

Entity Framework 6

Telerik Kendo UI 控件

JSON.net

最佳答案

很遗憾,我不了解您使用的许多工具,但我知道我将如何处理时区。

除了显示时间(或更确切地说:日期时间)和用户输入时,我会在任何地方使用 UTC。

我会让浏览器的 JavaScript 使用浏览器的时区在输出中进行转换。在输入中,转换可以在客户端或服务器端完成。在后一种情况下,时区必须是从浏览器发送到服务器的信息的一部分。服务器上的 UTC 时区应设置在尽可能低的级别,并且如果可能的话,在所有组件(操作系统、网络服务器、数据库...)中设置。

用户的首选时区对于时区未知的所有情况仍然有用(例如,在电子邮件通信中 - 但请记住始终以时间格式提供时区)。

有时(没有双关语意……)以上内容并不容易或不适用。例如,一个时间表(日历),用户将他们头脑中的时区附加到该时间表上,不一定是浏览器的时区。另一种情况是,必须知道用户的时区才能进行一些在浏览器上不容易完成的计算——在这种情况下,服务器必须首先从浏览器获取时区。但大多数时候(仍然没有双关语意......)你可以不用时区(使用 UTC)愉快地做,除了在向用户展示某些东西之前或从用户那里得到一些东西之后。

关于您的最后一段:如果您假设“用户配置文件时区 = 浏览器时区”,您很快就会遇到麻烦。

一些最后的建议:

  • “时区”是一个含糊不清的术语。它可能是指与 UTC 的固定偏移量(如 UTC+1),或者是指计算给定区域(如意大利罗马时区)中任何时刻的此偏移量的规则。始终使用第二种含义(例如,不要将当前偏移量用于 future 或过去的日期,而是正确地来回转换日期时间),并记住两者都可以在用户 session 期间发生变化。
  • 注意不要将“纯”日期处理为同一天的午夜(也不要处理为中午 - 萨摩亚的人会感谢您),因为这样日期可能会随着时区的变化而变化。换句话说,不要将时间信息附加到纯日期。

P.S.:通过点击您的链接,我很高兴地发现我完全同意 this answer 的结束语。 (由比我更有声望的人)

关于timezone - MVC 处理时区和 JSON 序列化 - 如何转换为特定时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22364917/

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