格式化基于用户文化的日期时间

时间:2014-02-23 11:49:31

标签: c# asp.net-mvc date datetime formatting

如何根据ASP.NET-MVC应用中的用户区域设置格式化日期和时间,而无需担心日期的顺序?

例如,我希望:

  1. 领先零(dd)的日子;
  2. 月缩写为三个字母的形式(MMM);
  3. 全年(yyyy);
  4. 时间只是小时和分钟都带有前导零(HH:mm);
  5. 取决于用户是否来自美国后显示AM / PM;
  6. 每个国家/地区都以不同的顺序显示日期。美国首先显示的是月份而不是几天(MMM / dd / yyyy)。在中国的第一年比一个月(yyyy-MMM-dd)(IIRC)。在欧洲,大多数国家都以这种格式显示日期:dd-MMM-yyyy。

    然后更不用说用于在每个国家将月份,日期和年份分开的斜杠/破折号。

    这当然可以通过无休止的if / elseswitch声明来完成,但是没有更优雅的方法来做到这一点吗?

    编辑这是我提出的最佳选择:

    var cltr = System.Threading.Thread.CurrentThread.CurrentCulture;
    DateTime.Now.ToString(cltr.DateTimeFormat.ShortDatePattern + " " + cltr.DateTimeFormat.ShortTimePattern)
    

    仅以数字显示日期。如何在短月份表示法中更改,但不更改顺序和分隔符等?

2 个答案:

答案 0 :(得分:1)

您可以使用CurrentCulture和CurrentCultureInfo获取用户当前使用的文化。

有关详细信息,请参阅:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

答案 1 :(得分:0)

我认为你在谈论格式化问题。获得DateTime对象后,就可以根据需要显示它。如果要将日期时间显示为美国格式,则必须在new CultureInfo("en-US")方法中将IFormatProvider指定为DateTime.ToString()