c # формат даты и времени - PullRequest
2 голосов
/ 08 октября 2009

Я хочу иметь определенный формат для моего DateTime в зависимости от текущей культуры.

Итак, я пытаюсь это:

dateTime.ToString("dd/MM/yyyy hh:mm");

Это частично нормально, / заменяется разделителем, специфичным для культуры. Но порядок дня и месяца не меняется (например, MM / dd) в зависимости от культуры.

Использование .ToString("g") работает, но это не включает ведущий ноль.

Как мне это сделать?

Ответы [ 7 ]

11 голосов
/ 08 октября 2009

Я думаю, что это будет делать то, что вы хотите:

System.Globalization.DateTimeFormatInfo format =
    System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
string dateTime = DateTime.Now.ToString(format.FullDateTimePattern);

EDIT:

Для короткой даты / времени вы можете сделать следующее:

    System.Globalization.DateTimeFormatInfo format =
         System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
    string dateTime = DateTime.Now.ToString(format.ShortDatePattern + " " + 
         format.ShortTimePattern);
4 голосов
/ 08 октября 2009

Вместо использования "g" вы можете найти нужный формат на странице документации Стандартные даты и времени .

Редактировать: Похоже, вы можете CultureInfo.DateTimeFormat.ShortDatePattern , но все равно проверьте параметры.

2 голосов
/ 08 октября 2009

Символ / является заполнителем, который будет заменен символом разделения даты в текущей культуре. Если вы хотите «жестко закодировать» формат для использования /, вам нужно изменить строку формата следующим образом:

dateTime.ToString("dd'/'MM'/'yyyy hh':'mm");
1 голос
/ 08 октября 2009

попробуйте это:

var cinf = CultureInfo.CurrentCulture.DateTimeFormat.DateSeparator;

DateTime.Now.ToString("dd/MM/yyyy hh:mm").Replace(cinf,"/");
1 голос
/ 08 октября 2009

Вы хотите использовать «g», однако ведущий ноль зависит от культуры. Инвариантная культура и некоторые другие будут включать ведущий ноль, но другие культуры не будут.

Есть ли какая-то конкретная причина, по которой вы хотите сохранить ведущий ноль?

0 голосов
/ 08 октября 2009

Если вас не устраивают стандартные шаблоны, вы можете отредактировать их следующим образом:

DateTimeFormatInfo format = (DateTimeFormatInfo) CultureInfo.CurrentCulture.DateTimeFormat.Clone();
format.ShortTimePattern = "hh:mm"; // example only
string result = value.ToString("g", format);
0 голосов
/ 08 октября 2009

Эта статья должна ответить на ваш вопрос: Форматирование даты и времени для определенной культуры

...