我有一个测试应用程序,它允许用户从 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 机器上,文本框显示:

我的日期 : 4/11/2012 4:07:09 PM
文化特定日期:19/05/33 04:07:09

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

我的日期 : 4/11/2012 4:07:09 PM
文化特定日期:20/05/33 04:07:09

如您所见,特定于文化的日期相差一天。什么可能导致这种差异?

最佳答案

我怀疑这是由于 Windows XP 机器没有收到最新的 adjustments to the Umm al-Qura calendar ,而大概是 Windows 7 机器保持最新,尽管我不希望这些调整会影响当月。或者,这可能是由于:



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

(顺便说一下,那个页面同意现在是 19 号。)

关于c# - 特定于文化的 DateTime 字符串在平台之间不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10113239/

10-13 05:57