Чому DateTime.ToString (“dd / MM / yyyy”) дає мені dd-MM-yyyy?


155

Я хочу, щоб мій час перетворення був перетворений у рядок у форматі "dd / MM / yyyy"

Щоразу, коли я конвертую його за допомогою DateTime.ToString("dd/MM/yyyy"), я отримую dd-MM-yyyyнатомість.

Чи є якась інформація про культуру, яку я повинен встановити?


виконайте DateTime.ToString ("dd / MM / yyyy");
jimplode

2
Я зробив це, це не спрацювало, проблема не в датах, це "-", я хочу, щоб це було "/", як я вказав
Diskdrive

7
використання ММ, а не мм - мм представляє хвилини, а не місяці.
Ллойд Пауелл

1
можливий дублікат того, як відформатувати дату з косою
рисою

Документація MSDN для DateTime.ToString безнадійно помиляється: " Наприклад, рядок формату" MM / dd / yyyHH: mm "відображає рядок дати та часу у фіксованому форматі ... Рядок формату використовує" / "як фіксований роздільник дат незалежно від конкретних культурних параметрів ".
Полковник Паніка

Відповіді:


243

Штрих - це роздільник дати, так що буде використаний поточний роздільник дати культури.

Якщо ви хочете, щоб він жорстко кодував завжди косу рису, ви можете зробити щось подібне:

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender - у деяких культурах вони є.
Даніель А. Білий

дякую за швидку відповідь. Ти правий. Я дам вам правильну відповідь
Diskdrive

6
Ви також можете використовувати цей формат: dateTime.ToString (@ "yyyy \ / MM \ / dd")
base2


2
Уникнення рядка формату за допомогою зворотної косої риси також працює: DateTime.Now.ToString ("dd \\ / MM \\ / yyyy");
TomB

61

Передайте CultureInfo.InvariantCulture як другий параметр DateTime, він поверне рядок як потрібний, навіть дуже спеціальний формат:

DateTime.Now.ToString("dd|MM|yyyy", CultureInfo.InvariantCulture)

повернеться: 28 | 02 | 2014


Цей код більш чіткий, ніж у прийнятій відповіді (я маю на увазі доданий CultureInfo). Це виглядає принаймні краще, ніж уникнути косоокості апострофами.
Сергій

2
Однозначно легше читати, ніж використовувати символи втечі. Я трохи шокований, що не знав увесь час, що мої формати побачень будуть перезаписані!
Savage

10

Додати CultureInfo.InvariantCultureяк аргумент:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

Повернеться:

"16/08/2016"

якщо розробник використовує метод стригування з деякими літерами, такими як M m ss і т.д., отримає неправильний результат з вашим рішенням, наприклад Datetime.Now.ToString ("yyyy / dd / mm / Month", CultureInfo.InvariantCulture) не призведе до 2017/01 / 02 / місяць це призведе до 2017/01/02 / 2місяця
Okan SARICA

@OkanSARICA, якщо ви хочете суфіксувати дату з "/ Month", ви повинні зробити це після методу ToString. DateTime.Now.ToString ("yyyy / MM / dd", CultureInfo.InvariantCulture) + "/ Місяць";
Мікаель Енгвер

1

Якщо ви використовуєте MVC, таблиці, це працює так:

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>

-3

Дурне питання / відповідь, можливо, але ви намагалися dd/MM/yyyy? Зверніть увагу на використання великих літер.

mmстановить хвилини з провідним нулем. Тож я сумніваюся, що саме цього ви хочете.

Це може бути корисно: http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.