Установить формат даты по умолчанию С#
Есть ли способ установить или переопределить формат DateTime по умолчанию для всего приложения. Я пишу приложение в С#.Net MVC 1.0 и использую много дженериков и размышлений. Было бы намного проще, если бы я мог переопределить формат DateTime.ToString() по умолчанию как "dd-MMM-yyyy". Я не хочу, чтобы этот формат менялся, когда сайт запускался на другой машине.
Изменить -
Просто для того, чтобы уточнить, я имею в виду конкретный вызов ToString, а не какую-либо другую функцию расширения, это из-за кода отражения/сгенерированного кода. Было бы проще просто изменить вывод ToString.
Ответы
Ответ 1
"Формат по умолчанию" даты и времени:
ShortDatePattern + ' ' + LongTimePattern
по крайней мере, в текущей монографической версии .
Это особенно болезненно, если вы хотите отобразить что-то вроде 2001-02-03T04: 05: 06Z, т.е. дата и время, объединенные в соответствии с ISO 8606, но не большая проблема в вашем случае:
using System;
using System.Globalization;
using System.Threading;
namespace test {
public static class Program {
public static void Main() {
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
culture.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = culture;
Console.WriteLine(DateTime.Now);
}
}
}
Это установит поведение по умолчанию ToString по дате, чтобы вернуть ожидаемый формат.
Ответ 2
Это зависит от настроек локализации вашего приложения. Измените это соответственно, чтобы получить правильный формат.
В противном случае есть вспомогательный класс или метод расширения, который всегда обрабатывает ваше DateTime.
public static string ToMyDateTime(this DateTime dateTime) {
return dateTime.ToString("dd-MMMM-yy");
}
Ответ 3
DateTime.ToString() объединяет строки пользовательского формата, возвращаемые свойствами ShortDatePattern и LongTimePattern DateTimeFormatInfo. Вы можете указать эти шаблоны в DateTimeFormatInfo.CurrentInfo.
Я никогда не пробовал это сам.
Ответ 4
Если вы хотите быть уверены, что ваша культура остается прежней, просто установите ее сами, чтобы избежать неприятностей.
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("nl-BE");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
Приведенный выше пример устанавливает культуру потока бельгийско-голландскому.
CurrentCulture выполняет всю обработку даты и времени, а CurrentUICulture обрабатывает локализацию пользовательского интерфейса, например ресурсы.
Ответ 5
Вы можете написать ExtensionMethod следующим образом:
public static string ToMyString(this DateTime dateTime)
{
return dateTime.ToString("needed format");
}
Ответ 6
Я не уверен, что это будет работать для веб-приложения, но вы можете попробовать установить свойство DateTimeFormat
для текущей культуры.
Отметьте этот и специально this.