Подтвердить что ты не робот

Установить формат даты по умолчанию С#

Есть ли способ установить или переопределить формат DateTime по умолчанию для всего приложения. Я пишу приложение в С#.Net MVC 1.0 и использую много дженериков и размышлений. Было бы намного проще, если бы я мог переопределить формат DateTime.ToString() по умолчанию как "dd-MMM-yyyy". Я не хочу, чтобы этот формат менялся, когда сайт запускался на другой машине.

Изменить - Просто для того, чтобы уточнить, я имею в виду конкретный вызов ToString, а не какую-либо другую функцию расширения, это из-за кода отражения/сгенерированного кода. Было бы проще просто изменить вывод ToString.

4b9b3361

Ответ 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.