Asp.net 为什么en IE文化没有给我AM PM格式的字符串?
我有这个代码来设置文化Asp.net 为什么en IE文化没有给我AM PM格式的字符串?,asp.net,datetime-format,Asp.net,Datetime Format,我有这个代码来设置文化 public static CultureInfo GetRegionDefaultCulture(int regionId) { // removed code to shorten.... return CultureInfo.CreateSpecificCulture("en-au"); } 在我的测试示例的代码中使用它 Thread.Curre
public static CultureInfo GetRegionDefaultCulture(int regionId)
{
// removed code to shorten....
return CultureInfo.CreateSpecificCulture("en-au");
}
在我的测试示例的代码中使用它
Thread.CurrentThread.CurrentCulture =
CultureHelper.GetRegionDefaultCulture(regionId);
DateTime dtNow = DateTime.Now;
Response.Write("<br/>" + dtNow.ToString("dd MMM yyyy hh:mm tt"));
在我的测试示例后面的aspx代码中使用这个
Thread.CurrentThread.CurrentCulture =
CultureHelper.GetRegionDefaultCulture(regionId);
DateTime dtNow = DateTime.Now;
Response.Write("<br/>" + dtNow.ToString("dd MMM yyyy hh:mm tt"));
如果我更新代码以使用这些区域性中的任何一个,我也会正确地在输出中获得AM/PM
en-PH
en-GB
en-US
en-JM
如果我更新代码以使用
en-IE
输出是
09 Nov 2010 04:44
我错过什么了吗?为什么en-IE的行为有所不同
回答
从@jordan的回答中获得
添加这段代码是有效的
DateTimeFormatInfo info = CultureInfo.CurrentCulture.DateTimeFormat;
info.AMDesignator = "AM";
info.PMDesignator = "PM";
显然,“en IE”的区域设置默认使用24小时时钟,因此不需要AM/PM。根据,如果区域性不使用AM/PM,则tt将不会返回任何内容 对于不使用AM指示符的区域性,此属性返回空字符串 我找不到关于哪些文化中有AM指示符的任何文档。文化信息是通过本机方法检索的,我找不到该方法的源。您可以使用以下代码生成自己的列表:
CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(c => string.IsNullOrEmpty(c.DateTimeFormat.AMDesignator)));
这是一种文化行为。它使用windows区域性设置来处理其详细信息。如果您想设置区域设置信息,您应该设置AM/PM指示符。 这就是您使用@Jordans代码所做的 但这里的问题是语言。”“AM”和“PM”适用于任何地区。但是需要做的是“AM”和“PM”应该根据现场情况而改变 例如:如果您的区域设置信息是“zh TW”,则结果将是下午 04:16:08 因此,使用24小时制是一种解决方案。但据我们所知,没有上午/下午 例如下午3:15=15:15 这是一个很好的解决方案,因为这是一个搁浅的问题 第二个解决方案就是这样。 更改服务器的区域设置/文化设置。 请参阅
希望我的评论能对你有所帮助。你从哪里获得这些信息?问题评论中的维基百科链接可能是一个很好的资源。区域设置非常松散。无论是谁为en IE实施了这些标准,都是基于一个国家常见惯例的一些假设。显然,iRend倾向于使用24小时时钟而不是12小时时钟,所以这就是该区域设置的实现方式。DateTime.Now还提供了带有en GB的24小时格式。。。但是格式给了我AM/PMstill@Rob.Oakshott您还可以调用
GetLocaleInfo(LOCALE\u STIMEFORMAT)
,注意它返回HH:mm:ss
(大写的HH表示24小时格式)。其他地区可能返回hh:mm:ss tt
(小写的hh表示12小时格式,tt是AM/PM的占位符)。Windows 7配置为不返回en GB
区域设置的tt。请注意:国际化意味着不总是获得相同的输出。谢谢,我想这就是答案。。。如果我能找到确认哪些文化中有AM指示符的文档,那么这将确认。。。到目前为止,我有点不走运。