Строка DateTime, специфичная для культуры, несовместима между платформами

У меня есть тестовое приложение, которое позволяет пользователю выбирать культуру из ComboBox и отображает дату, специфичную для культуры, в многострочном текстовом поле. Код ниже:

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 م

Как видите, дата, относящаяся к культуре, отличается на день. Что может быть причиной этого несоответствия?


person markyd13    schedule 11.04.2012    source источник
comment
Часы в обеих системах правильные?   -  person Oded    schedule 12.04.2012
comment
Может быть, дата sysdate в машине смещена на день? Что происходит, когда вы выбираете другую культуру, например US?   -  person gdoron is supporting Monica    schedule 12.04.2012
comment
Системная дата правильная. Я вывожу свою дату, которая одинакова на обеих машинах.   -  person markyd13    schedule 12.04.2012
comment
обходной путь здесь работает?   -  person Raj Ranjhan    schedule 12.04.2012
comment
@Anurag Ranjhan: Спасибо, но я не верю, что этот обходной путь применим к моей ситуации.   -  person markyd13    schedule 12.04.2012


Ответы (1)


Я подозреваю, что это связано с тем, что компьютер с Windows XP не получает последние версии корректировки календаря Умм-аль-Кура, в то время как предположительно Windows 7 постоянно обновляется, хотя я не ожидал этих корректировок чтобы повлиять на текущий месяц. Как вариант, это может быть из-за этого:

Только в последнее время стало доступно больше информации, которая теперь позволяет реконструировать календарь, принятый на Аравийском полуострове в недавнем прошлом, и предсказать его дальнейший ход на много лет вперед.

... так что, возможно, реализация Windows XP устарела.

(Кстати, эта страница соглашается с тем, что в настоящее время она 19-я.)

person Jon Skeet    schedule 11.04.2012