我在澳大利亚,所以我希望以d / mm / yyyy格式显示日期.
在我的Windows 7框上,我可以输入d / mm格式的日期,并将其正确转换(例如1/11转换为11月1日,13/1转换为1月13日等)
在我的Windows 8框中,同样的输入被解释为美国格式,所以1/11转换为1月11日,13/1失败(因为没有第13个月).
这两台计算机都设置为使用澳大利亚格式,我在Application.StartUp事件中有这个代码:
FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement),New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))
Binding的StringFormat设置为d / MM / yyyy,并且我已经通过将TextBlock绑定到将其StringFormat设置为D的同一属性(长日期格式,它给出了如“星期三”,“ 2012年1月11日’).
有没有人有任何想法?
更新:进一步的调查(见下面的评论)显示,这似乎是与Windows 7相比,Windows 8上的en-AU文化不同的问题,这意味着它将mm / dd格式的“1/11”日期解释为Windows 8,而在Windows 7上,它以dd / mm格式解释它们,这是我在使用en-AU文化时期望的.
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.ietflanguagetag.aspx:
The format of an IETF language tag is similar to the culture name returned by the Name property,but does not identify a culture uniquely. That is,different cultures share the same IETF language tag if those cultures have identical linguistic characteristics.