tox*_*xaq 11 c# globalization cultureinfo
我正在修改一个全球化的Web应用程序,它为每个登录用户使用存储的CultureInfo.
客户希望时间数据输入被本地化.显示不是问题,因为格式化已经可用.但是我需要检测当前cultureinfo是24小时还是上午/下午所以我可以显示正确的输入框(而不仅仅是文本字段).
我最初的想法是检查CultureInfo的DateTimeInfo属性,看看ShortTimePattern是否包含大写H或小写h,但这对我来说不够强大.
有没有更好的办法?我已经阅读了两者的类属性,但除非我遗漏了什么,否则我看不到任何现有的方法或属性.
我认为没有更好的方法来获取这些信息.文化的时间模式可以包含任何内容(用户甚至可以创建ShortTimePattern为"\ hello"的自定义文化,然后DateTime.ToString()随时返回"hello").在这种情况下,框架如何确定CultureInfo是24小时格式还是12小时格式?
所以"正常" DateTimeFormatInfo.ShortTimePattern必然包含'h'或'H',否则小时将不会显示.我想你可以按照你最初的想法检查一下.您还可以检查"h"或"H"是否未在我的"\ hello"示例中使用\来转义,因为这不代表小时:)
最强大的方法是检查DateTimeFormatInfo.AMDesignator是否为空字符串.
if (DateTimeFormatInfo.CurrentInfo.AMDesignator == "")
//24hour format
else
//12hour format
Run Code Online (Sandbox Code Playgroud)
小智 5
检查'H'/'h'似乎比检查AM / PM指示符更健壮。en-gb是一个很好的示例:时间格式字符串为HH:mm,并且AM / PM指示符设置为AM / PM。Windows将以24h格式显示时间!这似乎是一个不一致的定义,但是检查'H'修复了我的错误。
| 归档时间: |
|
| 查看次数: |
4165 次 |
| 最近记录: |