DateTime.Now.ToLocalTime() не обновляется?

пожалуйста, не спрашивайте меня, почему, но мне нужно написать простую программу, которая выводит текущую системную дату и время в формате, в котором настроена система.

Пример: системная дата 03.03.2018, нажмите кнопку и распечатайте дату в формате дд.мм.гггг. Измените системный регион/часы на 03/03/2018, нажмите кнопку и распечатайте в формате дд/мм/гггг. Я попытался написать метод, используя класс DateTime, и назначить DateTime.Now переменной DateTime. Затем используйте свойство «ToLocalTime()», чтобы получить правильный формат. Этот метод вызывается, как только я нажимаю кнопку обновления.

private String getSystemDate(){
        DateTime date = DateTime.Now;
        date = date.ToLocalTime();
        return date.ToString(); ;
}

Проблема в том, что метка, которую я присваиваю возвращаемому значению getSystemDate(), не содержит правильного форматирования. Только после перезапуска приложения дата отображается в новом формате.

Какие-либо предложения?


person Constantin M    schedule 06.03.2018    source источник
comment
ToLocalTime() не имеет ничего общего с форматированием.   -  person SLaks    schedule 06.03.2018
comment
DateTime.Now это местное время.   -  person hatchet - done with SOverflow    schedule 06.03.2018
comment
Вам необходимо очистить кеш локали: msdn.microsoft. com/ru-ru/library/   -  person    schedule 06.03.2018
comment
Я ответил на свой комментарий.   -  person    schedule 06.03.2018


Ответы (1)


Вам нужно очистить кеш локали. Когда ваше приложение запускается, оно кэширует текущую локаль Windows. Он не обновляется сам по себе.

https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.clearcacheddata.aspx

(выделено мной)

Информация, такая как язык и региональные параметры по умолчанию и шаблоны формата, кэшируется при первом запросе. Эта информация может измениться в течение срока службы AppDomain, например, когда пользователь изменяет часть региональных и языковых параметров панели управления. Однако класс CultureInfo не определяет автоматически изменения в настройках системы.

Метод ClearCachedData очищает кэш объектов CultureInfo, созданных GetCultureInfo, и обновляет информацию в свойствах CurrentCulture, CurrentUICulture и CurrentRegion на основе текущих системных настроек.

Метод ClearCachedData не обновляет информацию в свойстве Thread.CurrentCulture для существующих потоков. Однако будущие потоки будут иметь любые новые значения свойства CultureInfo.

person Community    schedule 06.03.2018