Как отформатировать дату без использования кода — вопрос о форматировании строки

StackOverflow https://stackoverflow.com/questions/405140

  •  03-07-2019
  •  | 
  •  

Вопрос

Как я могу добиться следующего с помощью строки формата:Есть ли 01.01.2009 ?Он должен работать на всех языках (примером может служить Германия).Поэтому должен быть только короткий будний день, а затем короткая дата.

Я попробовал «ддд д» (без «).Однако это приводит к «Do 01».Может быть, есть какой-нибудь символ, который я могу поставить перед буквой «d», чтобы он шел сам по себе или что-то в этом роде?

Это было полезно?

Решение

DateTime.Now.ToString("ddd dd/MM/yyyy")

Другие советы

Вам следует использовать ИСО 8601 стандарт, если вы ориентируетесь на аудиторию, говорящую на разных языках.

DateTime.Now.ToString("ddd yyyy-MM-dd");

Альтернативно вы можете настроить таргетинг на текущую культуру с помощью короткой даты:

DateTime.Now.ToString("d", Thread.CurrentThread.CurrentCulture);

или длинная дата:

DateTime.Now.ToString("D", Thread.CurrentThread.CurrentCulture);

Чтобы получить короткую дату, специфичную для локали, а также название дня локали, вам придется использовать два вызова, поэтому:

 myDate.ToString("ddd ") + myDate.ToString("d");

Рассматривали ли вы вместо этого использование длинного формата даты?

Если вы хотите локализовать (я так понимаю, поскольку вы сказали «все языки»), вы можете использовать CultureInfo, чтобы установить различные культуры, которые вы хотите отображать.В библиотеке MSDN есть информация о Строки стандартного формата даты и времени и Класс КультурИнфо.

Пример MSDN предоставляет:

// Display using pt-BR culture's short date format
DateTime thisDate = new DateTime(2008, 3, 15);
CultureInfo culture = new CultureInfo("pt-BR");      
Console.WriteLine(thisDate.ToString("d", culture));  // Displays 15/3/2008

Для справки: в Java это выглядит так:

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
String formattedDate = dateFormat.format(date);

Если вы хотите, чтобы в качестве разделителей использовались одни и те же символы, вам необходимо использовать обратную косую черту для экранирования символа, иначе по умолчанию будет использоваться локаль, в которой вы находитесь.Я рекомендую использовать эту строку, если вам нужен формат, указанный в вашем вопросе.

DateTime.Now.ToString("ddd dd.MM.yyyy");

Чтобы вместо этого использовать косую черту, вам следует экранировать ее, чтобы она всегда выводилась как косая черта.

DateTime.Now.ToString("ddd dd\\/MM\\/yyyy");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top