c# - 日期时间本地化。任何标准/最佳实践

标签 c# asp.net-mvc datetime localization timezone

我唯一知道的是,DateTime 应始终以 UTC 格式存储,但在显示或获取输入时,它必须是用户本地时间的登录时间。

这是为了缓解时区问题。

任何标准/最佳实践,我必须触及已开发代码库的最少部分?

在收到请求时,我可以使用 ModelBinders (Asp.Net MVC)。但是我应该拦截什么来修改 DateTime 类型,同时呈现响应?

任何帮助将不胜感激....

最佳答案

如果您的系统有用户,一个好主意是针对这些用户设置文化代码。

这样,在您的基本 Controller 上,您可以覆盖执行的操作并在线程上设置用户的文化。像这样的东西:

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
        if (currentUser != null) //user your user object
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo(currentUser.Culture);
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(currentUser.Culture);
        }
        else
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-GB");
        }
}

然后,每当您使用 DateTime 对象时,您都可以使用 ToShortDateString :

string localistedDate = yourDate.ToShortDateString();

或者如果你不想要短格式,你可以使用ToString你自己的格式,在线程中传递文化

关于c# - 日期时间本地化。任何标准/最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16185034/

相关文章:

c# - 反复使用Form Constructor刷新标签文字

c# - 模型中属性的基于规则的可用值

asp.net-mvc - 获取 .cshtml 模板中的 MaxLength 值

mysql - 当我尝试使用 MySQL 中的身份存储注册用户时出错

python - POSIX 到 Olson/IANA 时区格式转换

php - 将日期和时间插入Mysql

c# - 没有参数传递给自定义 DataTemplateSelector 的 SelectTemplate()。为什么?

c# - 开源/免费的 C# Windows 应用程序的许可证 keystore

asp.net-mvc - 为什么带有 IList for editor 的 ASP.NET MVC 4 不能正确编写索引符号?

java - 使用 DateUtils 类的 parseDateStrictly() 方法时出现异常无法解析日期