Я ищу решение для получения формата даты системы.
Например: если я получаю DateTime.Now
? Какой формат даты используется? DD/MM/YYYY
и т.д.
Я ищу решение для получения формата даты системы.
Например: если я получаю DateTime.Now
? Какой формат даты используется? DD/MM/YYYY
и т.д.
Если он не был изменен в другом месте, он получит его:
string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
Если вы используете приложение winforms, вы также можете посмотреть UICulture:
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern;
Обратите внимание, что DateTimeFormat
является свойством чтения и записи, поэтому его можно изменить.
Ответы выше не соответствуют действительности.
У меня была ситуация, когда моя основная нить и мой поток пользовательского интерфейса были вынуждены находиться в культуре "en-US" (по дизайну). Мой формат DateTime для Windows был "dd/MM/yyyy"
string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern;
вернулся "MM/dd/yyyy", но я хотел получить свой реальный формат Windows. Единственный способ, которым я смог это сделать, - создать фиктивный поток.
System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate(){} );
string format = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern;
Свойство System.DateTime.Now возвращает System.DateTime. Это сохраняется в памяти в двоичном формате, который большинству программистов в большинстве случаев не нужно думать. Когда вы показываете значение DateTime или конвертируете его в строку по любой другой причине, оно преобразуется в соответствии со строкой формата, которая может указывать любой формат, который вам нравится.
В этом последнем смысле ответ на ваш вопрос "если я получаю DateTime.Now, какой формат даты используется?" это "он вообще не использует формат DateTime, потому что вы еще не отформатировали его".
Вы определяете формат, вызывая перегрузку ToString или (необязательно), если вы используете System.String.Format. Также есть формат по умолчанию, поэтому вам не всегда нужно указывать формат. Если вы спрашиваете о том, как определить формат по умолчанию, вы должны посмотреть на ответ Oded.