Що означає одна ціна у форматі часу на C # дати?


55

У нас є, наприклад, ця константа в C #:

System.Globalization.DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern

Він має це значення:

"yyyy'-'MM'-'dd'T'HH':'mm':'ss"

Я використовую його у ParseExactфункції, а потім також yyyy-MM-ddTHH:mm:ssпрацює.

Я не можу зрозуміти, для чого потрібні єдині цитати.

Відповіді:


76

Це буквальний роздільник рядків .

Все, що знаходиться між цитатами, інтерпретується як буквальний символ, і не інтерпретується як рядок спеціального формату.

Вони еквівалентні втечі за допомогою зворотної косої риси: dd'T'HHте саме, що і dd\THH.

У вашому рядку yyyy'-'MM'-'dd'T'HH':'mm':'ssлапки є непотрібними навколо -і T, оскільки вони не є рядками власного формату, і тому завжди трактуватимуться як літеральні рядки. Однак : це специфікатор формату , який визначає роздільник часу, який підходить для поточної культури. Цитування цього ':'означає, що буквальний символ :завжди буде використовуватися незалежно від сучасної культури.


2

Корисно знати, що це той самий формат, який використовується функцією Windows GetDateFormat . Ви використовуєте апострофи, щоб вказати якийсь буквальний текст, який ви хочете вставити в отриманий рядок.

Більш детальну документацію кодів форматування рядків можна знайти на:

У вашому рядку вказується, що він буквально хоче додати дефіси, колонки та символи T :

рр. рр. '-'MM '-'dd 'T'HH ':'мм ':'сс

Загалом, ви не хочете будувати дати / часи буквально з дефісами ( -), колонами ( :), або навіть косою рисою ( /). Тому що це неправильно для культур, які не використовують косої риски та колонки для побудови дат / часів:

  • 22.10.2019 10∶19∶54 ᴀᴍ
        1. 10:19:54
  • 2019.10.22 10:19:54
  • 2019-10-22 10.19.54
  • 2019-10-22 10:19:54
  • 22.10.2019 10:19:54
  • 2019-10-22 ཆུ་ཚོད་ 10:19:54 སྔ་ ཆ་
  • 2019-10-22 오전 10:19:54
      1. 2019 10:19:54
        1. 10:19:54
  • 22.10.19 10:19:54
  • 22.10.19 р. 10:19:54
  • 22.10.2019 10.19.54
  • 22.10.2019 10:19:54
  • 22.10.2019 10:19:54 пд
  • 22.10.2019 р. 10:19:54
  • 22.10.2019. 10:19:54
  • 22-10-19 10.19.54
  • 22-10-19 10.19.54
  • 22-10-19 10:19:54
  • 22-10-19 ਸਵੇਰ 10:19:54
  • 22-10-2019 10:19:54
  • 22-10-2019 ৰাতিপু 10:19:54
  • 22-окт. 19 10:19:54
  • 23.02.41 10:19:54 ص
  • 30.07.1398 10:19:54 ق.ظ

Що ви хочете зробити, якщо хочете вказати:

  • "ось де слід поставити роздільник дати"
  • "ось де слід поставити роздільник часу"

Використовується спеціальне:

  • Символ заміни сепаратора дат (/)
  • символ заміни роздільника часу (:)

І побудувати такий формат, як:

dd / yyyy / MM ss: HH: мм

Я не знаю, для чого потрібен бізнес, щоб побачити дату як:

  • 22/2019/10 37:10:24
  • 22-2019-10 37∶10∶24
  • 22 // 2019 // 10 37 :: 10 :: 24
      1. 10 37∶10∶24

Але таким чином локалізатор вставить правильні роздільники дати та часу в культурі.

Беручи під увагу , якщо ви буквально просили /, -або ::

  • дд '/'рррр '/'ММ сс ':'HH ':'мм

Ви буквально отримаєте:

  • 22/2019/10 37:10:24

а не:

  • 22-2019-10 37∶10∶24

Я не думаю, що рядки формату дати та часу .NET ідентичні GetDateFormat. Можливо, подібне, але, наприклад, значення yyyyyінше. Зважаючи на те, що це питання привертає неабияку увагу, і мова йде про C # /, я пропоную виправити це твердження і натомість встановити посилання на документи .NET.
кантон7
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.