C # Формат даты и региональные настройки - PullRequest
0 голосов
/ 23 мая 2011

Настройки Великобритании: 07.01.2011 (1 июля 2011 г.).При форматировании в Excel я использую «МММ-гг», ожидаемое: июль-11, но оно дает мне «Янв-11»

Мой код:

newDataRange.SetValue("Value2", arr);  //arr = "01/07/2011 00:00:00.000"
newDataRange.SetValue("NumberFormat", "MMM-yy");

        public static void SetValue(this Range range, string propertyName, object value)
        {
            var excelCulture = new CultureInfo(1033);
            var args = new object[1];
            args[0] = value;
            range.GetType().InvokeMember(propertyName, 
                BindingFlags.SetProperty | BindingFlags.Public | BindingFlags.Instance, null, range, args, excelCulture);
        }

Я запутался.Кто-нибудь знает, как решить эту проблему

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Похоже, что культура, которую вы используете, имеет формат даты мм / дд / гггг, когда вы хотите дд / мм / гггг. Таким образом, ваше преобразование использует 1 из 1/7/2011 в качестве месяца вместо 7.

Изменение культуры на формат с дд / мм / гггг должно решить вашу проблему.

EDIT

Как я и подозревал, LCID 1033 (0x0409) - это en-US, а не en-GB. EN-GB - 2057 (0x0809). Чтобы избежать этой проблемы в будущем, следует использовать имя локали, см. new CultureInfo("en-GB");

1 голос
/ 23 мая 2011

Это явно не британские настройки - дата 1/7/2011 будет отображаться как январь 2011 года в формате даты США

...