我们遵循MVC模式,这是在控制器或javascript中转换为UTC和Local的最佳位置?另外,我们是否需要在固定区域性中保存日期格式以支持全球化?(或者)在 MVC 中全球化日期时间格式是否有任何标准的经验法则/最佳实践?
每种方法都有优点和缺点。
服务器端
- 您需要
知道用户的时区。 通常,这是通过应用内某些设置页面上的用户选择来完成的。 知道时区后,通常在MVC控制器中使用
TimeZoneInfo
或Noda时间进行转换。您需要了解用户的区域性(例如
en-US
或fr-FR
等)以显示正确的格式(例如MM/dd/yyyy
vsdd/MM/yyyy
)。 这可以通过 .NET 全球化来完成。 格式化应在 MVC 视图中完成,而不是在控制器中完成。您需要掌握时区更新,因为随着世界各国政府改变对其偏移量和 DST 转换日期的看法,时区规则可能会发生变化。
客户端
-
您只需将 UTC 时间发送到浏览器,并让它转换为本地时区。 无需用户选择 - 只要您只关心他们当前的本地时区。
-
正确设置格式仍然很棘手。 像 moment.js 这样的图书馆可以提供帮助。
-
有些错误可能会影响也可能不会影响您的转化。 注意它们。
关于您关于固定文化的问题 - 您需要详细说明"保存日期"的含义。 如果是指存储到数据库(如 SQL Server),则区域性和格式无关紧要。 将DateTime
发送到数据库,而不是字符串。