Как получить системный формат DateTime? - PullRequest
30 голосов
/ 01 июня 2011

Я ищу решение для получения системного формата даты и времени.

Например: если я получу DateTime.Now?Какой формат даты и времени это использует?DD/MM/YYYY и т. Д.

Ответы [ 3 ]

49 голосов
/ 01 июня 2011

Если он не был изменен в другом месте, он получит его:

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

При использовании приложения WinForms вы также можете посмотреть на UICulture:

string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern;

Обратите внимание, что DateTimeFormat является свойством чтения-записи, поэтому его можно изменить .

16 голосов
/ 20 марта 2014

Ответы выше не являются полностью правильными.

У меня была ситуация, когда мой основной поток и мой поток пользовательского интерфейса были вынуждены придерживаться "en-US" культуры (по замыслу).Мой формат Windows DateTime был «дд / мм / гггг»

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern;

, но вернул «ММ / дд / гггг», но я хотел получить свой настоящий формат Windows.Единственный способ, которым я смог это сделать, - создать фиктивную нить.

System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate(){} );
string format = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern;
2 голосов
/ 01 июня 2011

Свойство System.DateTime.Now возвращает System.DateTime.Это хранится в памяти в двоичном формате, о котором большинству программистов в большинстве случаев не нужно думать.Когда вы отображаете значение DateTime или конвертируете его в строку по любой другой причине, оно преобразуется в соответствии со строкой формата, которая может указывать любой формат, который вам нравится.

В этом последнем смысле, ответ на вашвопрос "если я получу DateTime.Now, какой формат даты и времени это использует?"это «он вообще не использует какой-либо формат DateTime, потому что вы его еще не отформатировали».

Вы указываете формат, вызывая перегрузку ToString или (необязательно), если вы используете System.String.Формат.Также есть формат по умолчанию, поэтому вам не всегда нужно указывать формат.Если вы спрашиваете о том, как определить формат по умолчанию, вам следует посмотреть на ответ Одеда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...