特定于文化的DateTime字符串在平台之间不一致

时间:2012-04-11 20:13:43

标签: c# .net datetime cultureinfo currentculture

我有一个测试应用程序,允许用户从ComboBox中选择文化,并在多行TextBox中显示文化特定日期。代码如下:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        comboBox1.Items.AddRange(
            CultureInfo.GetCultures(CultureTypes.SpecificCultures));
    }

    private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
    {
        CultureInfo selectedCulture = comboBox1.SelectedItem as CultureInfo;
        DateTime currentDate = DateTime.Now;

        textBox1.Text =
            "My Date : " + currentDate.ToString() + Environment.NewLine +
            "Culture Specific Date: " + currentDate.ToString(selectedCulture);
    }
}

我注意到如果选择“ar-SA”,阿拉伯语(沙特阿拉伯),那么当我在不同的机器上运行应用程序时,我会看到不同的结果。

在Windows 7计算机上,文本框显示:

My Date : 4/11/2012 4:07:09 PM
Culture Specific Date: 19/05/33 04:07:09 م

在Windows XP计算机上,文本框显示:

My Date : 4/11/2012 4:07:09 PM
Culture Specific Date: 20/05/33 04:07:09 م

正如您所看到的,特定于文化的日期已经过了一天。可能导致这种差异的原因是什么?

1 个答案:

答案 0 :(得分:6)

怀疑这是因为Windows XP计算机没有收到最新版本adjustments to the Umm al-Qura calendar,而大概是Windows 7机箱保持最新状态,尽管我不会#39 ; 期望这些调整会影响当前月份。或者,可能是由于这个原因:

  

直到最近才有更多信息可供使用,现在可以重建最近在阿拉伯半岛采用的日历,并提前多年预测其未来的路线。

...所以也许Windows XP的实现已经过时了。

(那个页面同意它现在是第19个,顺便说一句。)