MVC 中的全球化日期和时间格式
Globalizing date & time format in MVC
我们正在遵循 MVC 模式,这是在控制器或 javascript 中转换为 toUTC 和 toLocal 的最佳位置?此外,我们是否需要以不变文化保存日期格式以支持全球化? (或)是否有任何标准经验 rule/best 在 MVC 中全球化日期时间格式的做法?
每种方法各有利弊。
服务器端
您需要知道用户所在的时区。通常这是通过用户在您的应用程序中的某些设置页面上进行选择来完成的。知道时区后,通常会在 MVC 控制器中使用 TimeZoneInfo
或 Noda Time 完成转换。
您需要了解用户的文化(例如 en-US
或 fr-FR
等)以显示正确的格式(例如 MM/dd/yyyy
对比 dd/MM/yyyy
)。这可以通过 .NET 全球化来完成。格式化应该在您的 MVC view 中完成,而不是控制器。
您需要随时了解时区更新,因为时区规则可能会随着世界各国政府改变其偏移量和 DST 转换日期的想法而改变。
客户端
您只需将 UTC 时间发送到浏览器,然后让它转换为本地时区。无需用户选择 - 只要您只关心他们当前的本地时区。
正确设置格式仍然很棘手。 moment.js 等图书馆可以提供帮助。
some bugs 可能会或可能不会影响您的转化。请注意它们。
关于你关于不变文化的问题 - 你需要详细说明你所说的 "save the date" 是什么意思。如果您的意思是存储到数据库,例如 SQL 服务器,则文化和格式无关紧要。将 DateTime
发送到您的数据库,而不是字符串。
我们正在遵循 MVC 模式,这是在控制器或 javascript 中转换为 toUTC 和 toLocal 的最佳位置?此外,我们是否需要以不变文化保存日期格式以支持全球化? (或)是否有任何标准经验 rule/best 在 MVC 中全球化日期时间格式的做法?
每种方法各有利弊。
服务器端
您需要知道用户所在的时区。通常这是通过用户在您的应用程序中的某些设置页面上进行选择来完成的。知道时区后,通常会在 MVC 控制器中使用
TimeZoneInfo
或 Noda Time 完成转换。您需要了解用户的文化(例如
en-US
或fr-FR
等)以显示正确的格式(例如MM/dd/yyyy
对比dd/MM/yyyy
)。这可以通过 .NET 全球化来完成。格式化应该在您的 MVC view 中完成,而不是控制器。您需要随时了解时区更新,因为时区规则可能会随着世界各国政府改变其偏移量和 DST 转换日期的想法而改变。
客户端
您只需将 UTC 时间发送到浏览器,然后让它转换为本地时区。无需用户选择 - 只要您只关心他们当前的本地时区。
正确设置格式仍然很棘手。 moment.js 等图书馆可以提供帮助。
some bugs 可能会或可能不会影响您的转化。请注意它们。
关于你关于不变文化的问题 - 你需要详细说明你所说的 "save the date" 是什么意思。如果您的意思是存储到数据库,例如 SQL 服务器,则文化和格式无关紧要。将 DateTime
发送到您的数据库,而不是字符串。