更改日期选择器文本:大写月份

Posted

技术标签:

【中文标题】更改日期选择器文本:大写月份【英文标题】:Change date picker text: capitalize month 【发布时间】:2012-08-15 05:30:10 【问题描述】:

我想通过大写月份的第一个字母来更改日期选择器。

目前我在线程中使用 setculture info 并在那里指定格式,但对于我的文化来说,月份总是小写:

CultureInfo ci = new CultureInfo("es-MX");
ci.DateTimeFormat.ShortDatePattern = "ddd dd/MMM/yyyy";
Thread.CurrentThread.CurrentCulture = ci;

显示:

大教堂 19/前/2012

我想拥有:

大教堂 19/Ago/2012

我该如何改变呢?

【问题讨论】:

【参考方案1】:

指定AbbreviatedMonthGenitiveNamesAbbreviatedMonthNamesShortDatePattern 可以解决问题。

Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX")

    DateTimeFormat = new DateTimeFormatInfo
    
        AbbreviatedMonthGenitiveNames = new string[]  "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", string.Empty ,
        AbbreviatedMonthNames         = new string[]  "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", string.Empty ,
        ShortDatePattern = "ddd dd/MMM/yyyy"
    
;

产量:

编辑:

我必须补充:

...
AbbreviatedDayNames = new string[]  "Dom",  "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb",

【讨论】:

Doh.. 它说:Sun 18/Ago/2012 不是Dom 19/Ago/2012 我也必须添加AbbreviatedDayNames【参考方案2】:

您可能可以使用CultureAndRegionInfoBuilder class 来复制现有文化并仅更改月份名称。然后,您随后在您的应用程序中使用该文化而不是您现在使用的 CultureInfo

但请注意,CultureAndRegionInfoBuilder 位于 sysglobl.dll 程序集 which you'll need to import 中。

【讨论】:

不需要(不能)使用该类,而是指定AbbreviatedMonthNames 属性

以上是关于更改日期选择器文本:大写月份的主要内容,如果未能解决你的问题,请参考以下文章

在引导日期选择器更改月份事件不起作用

如何在 extjs 日期字段或日期选择器中访问更改月份事件

根据月份文本自动化日期选择器

Bootstrap 日期选择器显示月份和年份菜单

日期选择器显示错误的月份[重复]

更改日期选择器的文本颜色