c# – .NET中的自定义文化感知日期格式
发布时间:2020-12-15 08:03:05 所属栏目:百科 来源:网络整理
导读:在.NET中,用于格式化DateTime值的大多数标准字符串都是文化感知的,例如ShortDatePattern(“d”)格式字符串根据当前文化切换年/月/日部分的顺序: 6/15/2009 1:45:30 PM - 6/15/2009 (en-US)6/15/2009 1:45:30 PM - 15/06/2009 (fr-FR)6/15/2009 1:45:30 PM -
在.NET中,用于格式化DateTime值的大多数标准字符串都是文化感知的,例如ShortDatePattern(“d”)格式字符串根据当前文化切换年/月/日部分的顺序:
6/15/2009 1:45:30 PM -> 6/15/2009 (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR) 6/15/2009 1:45:30 PM -> 15.06.2009 (de-DE) 对于仅包含月和日的日期格式,我需要类似的东西: 6/15/2009 1:45:30 PM -> 6/15 (en-US) 6/15/2009 1:45:30 PM -> 15/06 (fr-FR) 6/15/2009 1:45:30 PM -> 15.06. (de-DE) 使用例如“MM / dd”自定义格式字符串不起作用;当我希望它显示“11.01”时,它将在1月11日在德国文化中错误地显示“01.11”. 如何构建一个自定义格式字符串,将日期部分的顺序考虑在内? 解决方法
假设传递的所有文化都有一个ShortDatePattern包含M或MM,d或dd按某种顺序使用某种分隔符(我不能想到格里高利历的异常,但我可能错了)那么以下内容将起作用:
private static string FindMonthDayOnly(System.Globalization.CultureInfo ci) { string shortPattern = ci.DateTimeFormat.ShortDatePattern; while(shortPattern[0] != 'd' && shortPattern[0] != 'M') { shortPattern = shortPattern.Substring(1); if(shortPattern.Length == 0) return ci.DateTimeFormat.ShortDatePattern; } while(shortPattern[shortPattern.Length - 1] != 'd' && shortPattern[shortPattern.Length - 1] != 'M') { shortPattern = shortPattern.Substring(0,shortPattern.Length - 1); if(shortPattern.Length == 0) return ci.DateTimeFormat.ShortDatePattern; } return shortPattern; } 如果假设非常不匹配,那么它将恢复为ShortDatePattern,尽管它也可能最终仅显示日期或仅显示月份. 它在最后没有正确包括分隔符或适当时的其他指标时失败.例如,它将标准格式(yyyy-MM-dd)转换为MM-dd而不是-MM-dd,这是没有年份的月 – 日组合的标准格式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- solaris10下安装oracle10g
- C 11 lambda和模板专业化
- ajax返回数据之前加载loading图标
- c# – 使用RabbitMQ的MassTransit – RecieveFrom的地址
- ruby-on-rails – 当电子邮件地址以“.old”结尾时,尽量避免
- Cocos2d-x 3.0final 终结者系列教程23CocosStudio UI组件使
- xcode – 通过OTA安装ipa时“无法连接到服务器”
- c# – 线性渐变画笔淡化WPF
- 自动对焦当通过Ajax加载时,HTML5的属性不仅适用于FireFox.为
- Reactor Cooling - sgu 194 无源汇可行流