【问题标题】:C# Changing CurrentCulture DateTimeFormat not workingC# 更改 CurrentCulture DateTimeFormat 不起作用
【发布时间】:2018-08-28 02:53:02
【问题描述】:

我尝试向我的 ASP.NET 网站添加新的语言支持(英语)。

但我所有的日期时间格式都从

当我将语言更改为“en-EN”时。

为了解决这个问题,我编写了以下代码:

CultureInfo cultureInfo = new CultureInfo("en-EN");
cultureInfo.DateTimeFormat.FullDateTimePattern = "dddd, d MMMM yyyy 'y.'";
cultureInfo.DateTimeFormat.FullDateTimePattern = "dd MMMM yyyy  'y.'";
cultureInfo.DateTimeFormat.FullDateTimePattern = "d MMMM yyyy 'y.'";
cultureInfo.DateTimeFormat.DateSeparator = ".";
cultureInfo.DateTimeFormat.ShortDatePattern = "d.M.yy";
cultureInfo.DateTimeFormat.ShortDatePattern = "d.MM.yy";
cultureInfo.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy";

System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;

但我的 dateTime 格式仍然像 d\M\yyyy

怎么了?请帮忙!

【问题讨论】:

  • 试试 .ToString(''d\M\yyyy")
  • “它仍然是相同的格式”是什么意思?您的代码仅显示了一些文化设置的定义;它没有向我们展示如何重现您遇到的任何问题。如果我运行您的代码,然后显示带有 Console.WriteLine(DateTime.Today); 之类的日期,则日期格式会反映您定义的设置。
  • @JoeFarrell 我的意思是我的约会时间仍然是d\M\yyyy 格式
  • 什么是“我的约会时间”?您尚未共享任何打印DateTime 的代码,因此无法猜测为什么您的文化设置没有按预期工作。换句话说,您没有提供complete example
  • @JoeFarrell 无论何时使用 DateTime。例如:@Html.DevExpress().Label(s => { s.Name = "dateCreated"; s.Style.Add(HtmlTextWriterStyle.FontWeight, "bold"); s.Style.Add(HtmlTextWriterStyle.Color, "#808080"); }).GetHtml()

标签: c# asp.net datetime cultureinfo


【解决方案1】:

检查对时间格式的完整理解:- https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

例子:-

DateTime.Now.ToString("MM/dd/yyyy") 05/29/2015
DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015
DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 05:50
DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 05:50 AM
DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 5:50
DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2015 5:50 AM
DateTime.Now.ToString("dddd, dd MMMM yyyy HH:mm:ss")    Friday, 29 May 2015 05:50:06
DateTime.Now.ToString("MM/dd/yyyy HH:mm")   05/29/2015 05:50
DateTime.Now.ToString("MM/dd/yyyy hh:mm tt")    05/29/2015 05:50 AM
DateTime.Now.ToString("MM/dd/yyyy H:mm")    05/29/2015 5:50
DateTime.Now.ToString("MM/dd/yyyy h:mm tt") 05/29/2015 5:50 AM
DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")    05/29/2015 05:50:06
DateTime.Now.ToString("MMMM dd")    May 29
DateTime.Now.ToString("yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss.fffffffK") 2015-05-16T05:50:06.7199222-04:00
DateTime.Now.ToString("ddd, dd MMM yyy HH’:’mm’:’ss ‘GMT’") Fri, 16 May 2015 05:50:06 GMT
DateTime.Now.ToString("yyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss")  2015-05-16T05:50:06
DateTime.Now.ToString("HH:mm")  05:50
DateTime.Now.ToString("hh:mm tt")   05:50 AM
DateTime.Now.ToString("H:mm")   5:50
DateTime.Now.ToString("h:mm tt")    5:50 AM
DateTime.Now.ToString("HH:mm:ss")   05:50:06
DateTime.Now.ToString("yyyy MMMM")  2015 May

【讨论】:

    【解决方案2】:

    您需要更改服务器或本地计算机的日期设置 例如:设置--> 时间和语言--> 地区--> 格式:(这里你需要改变国家) --> 附加设置 --> 日期 您可以更改日期格式

    祝你好运:)

    【讨论】:

    • 我正在研究改变文化的文化,这可能只是一个配置问题
    【解决方案3】:

    您可能会遇到 en-EN 是原始英语(如英语英语而不是美式英语),它表示带有正斜杠/反斜杠的日期值,而美式日期表示法通常使用破折号 (-) .如果您使用 Excel,请尝试在 1 月 2 日输入带有破折号和正斜杠的日期,您应该会看到不同的符号会翻转数字。

    您遇到的可能是 .NET 强制执行正确的文化符号,但您仍然应该能够像 @Md._Abdul_Alim 使用 .toString(format) 提到的那样格式化日期。

    https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

    【讨论】:

    • 我想我从来没有用破折号格式化过日期...这里是美式英语
    猜你喜欢
    • 2019-02-07
    • 2021-02-18
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多