Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于用户区域性设置日期时间格式_C#_Asp.net Mvc_Date_Datetime_Formatting - Fatal编程技术网

C# 基于用户区域性设置日期时间格式

C# 基于用户区域性设置日期时间格式,c#,asp.net-mvc,date,datetime,formatting,C#,Asp.net Mvc,Date,Datetime,Formatting,如何根据ASP.NET-MVC应用程序中的用户区域设置格式化日期和时间,而不必担心日期的顺序 例如,我想要: 前导零(dd)的日期 月份缩写三字母表(MMM) 全年(yyyy) 时间仅为小时和分钟,均为前导零(HH:mm) 根据用户是否来自美国,在时间结束后显示AM/PM 每个国家都以不同的顺序显示日期。美国显示的第一个月比第几天比第几年(MMM/dd/yyyy)。在中国,年比月比日(yyyy MMM dd)(IIRC)为第一年。在欧洲,大多数国家以这种格式显示日期:dd-MMM-yyy 更不用

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

例如,我想要:

  • 前导零(dd)的日期
  • 月份缩写三字母表(MMM)
  • 全年(yyyy)
  • 时间仅为小时和分钟,均为前导零(HH:mm)
  • 根据用户是否来自美国,在时间结束后显示AM/PM 每个国家都以不同的顺序显示日期。美国显示的第一个月比第几天比第几年(MMM/dd/yyyy)。在中国,年比月比日(yyyy MMM dd)(IIRC)为第一年。在欧洲,大多数国家以这种格式显示日期:dd-MMM-yyy

    更不用说每个国家用来分隔月、日和年的斜线/破折号了

    当然,这可以通过一个无休止的
    if
    /
    else
    switch
    语句来实现,但是没有更优雅的方法来实现吗

    编辑这是我想到的最好的方法:

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

    它仅以数字显示日期。我该如何在短月内改变它,但不改变顺序和分隔符等?

    我想你是在谈论格式问题。一旦有了
    DateTime
    对象,就可以根据需要显示它。如果要将日期时间显示为US格式,则必须在
    DateTime.ToString()
    方法中将
    new CultureInfo(“en-US”)
    指定为
    IFormatProvider

    您可以通过CurrentCulture和CurrentCultureInfo获取用户当前使用的区域性


    有关更多详细信息,请参见:

    当它是“取决于用户区域设置”时,您不必选择前导零或12/24小时格式。从更大的角度来看(因此,除了我可以选择或不选择的内容),您知道我如何做到这一点吗?@Quoter但这是更大的角度,不是吗?我知道这一点,只是不想这样做几百次。那么,有没有一种方法可以自动化新文化信息(“en-US”)的
    过程,而不是使用无数的
    if
    /
    else
    语句?