Как отформатировать дату без использования кода - Формат строки вопроса - PullRequest
2 голосов
/ 01 января 2009

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

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

Ответы [ 6 ]

3 голосов
/ 01 января 2009
DateTime.Now.ToString("ddd dd/MM/yyyy")
0 голосов
/ 01 января 2009

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

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

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

DateTime.Now.ToString("ddd dd\\/MM\\/yyyy");
0 голосов
/ 01 января 2009

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

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
String formattedDate = dateFormat.format(date);
0 голосов
/ 01 января 2009

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

Пример 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
0 голосов
/ 01 января 2009

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

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

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

0 голосов
/ 01 января 2009

Вы должны использовать стандарт ISO 8601 , если вы ориентируетесь на аудиторию с различными разговорными языками.

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

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

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

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

DateTime.Now.ToString("D", Thread.CurrentThread.CurrentCulture);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...