Apa arti satu kutipan di dalam format waktu tanggal C #?

55

Kami memiliki misalnya konstanta ini dalam C #:

System.Globalization.DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern

Ini memiliki nilai ini:

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

Saya menggunakannya dalam ParseExactfungsi dan kemudian yyyy-MM-ddTHH:mm:ssberfungsi juga.

Saya tidak bisa mencari tahu untuk apa kutipan itu.

Ilya Chernomordik
sumber

Jawaban:

76

Ini pembatas string literal .

Apa pun di antara tanda kutip tunggal ditafsirkan sebagai karakter literal, dan tidak akan ditafsirkan sebagai string format kustom.

Mereka sama dengan melarikan diri menggunakan backslash: dd'T'HHsama dengan dd\THH.

Dalam string Anda yyyy'-'MM'-'dd'T'HH':'mm':'ss, tanda kutip tidak perlu di sekitar -dan T, karena itu bukan string format kustom, dan karenanya akan selalu ditafsirkan sebagai string literal. Namun : adalah penentu format , yang mengevaluasi pemisah waktu yang cocok untuk budaya saat ini. Mengutipnya sebagai ':'berarti bahwa karakter literal :akan selalu digunakan, terlepas dari budaya saat ini.

wilayah7
sumber
2

Sangat berguna untuk mengetahui bahwa ini adalah format yang sama yang digunakan oleh fungsi Windows GetDateFormat . Anda menggunakan tanda kutip untuk menunjukkan beberapa literal yang ingin Anda masukkan ke string yang dihasilkan.

Dokumentasi lebih lanjut dari kode pemformatan string dapat ditemukan di:

Dalam string Anda itu indiating bahwa itu benar-benar ingin menambahkan tanda hubung, titik dua, dan T karakter:

yyyy '-'MM '-'hh 'T'HH ':'mm ':'ss

Secara umum Anda tidak ingin membangun tanggal / kali dengan harfiah sebuah tanda hubung ( -) atau titik dua ( :), atau bahkan garis miring ( /). Karena itu salah untuk budaya yang tidak menggunakan garis miring dan titik dua untuk membuat tanggal / waktu:

  • 10/22/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
  • 2019-10-22 10:19:54 AM
  • 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 pd
  • 22.10.2019 г. 10:19:54
  • 22.10.2019. 10:19:54
  • 22-10-19 10.19.54
  • 22-10-19 10.19.54 AM
  • 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 ق.ظ

Apa yang ingin Anda lakukan, jika Anda ingin menunjukkan:

  • "Di sinilah Anda harus meletakkan pemisah tanggal"
  • "Di sinilah Anda harus meletakkan pemisah waktu"

Gunakan spesial:

  • karakter pengganti pemisah tanggal (/)
  • karakter pengganti pemisah waktu (:)

Dan buat format seperti:

dd / yyyy / MM ss: HH: mm

Saya tidak tahu bisnis apa yang mungkin harus ditunjukkan oleh seseorang sebagai:

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

Tetapi dengan cara ini pelokalan akan memasukkan pemisah tanggal dan waktu budaya yang benar.

Sedangkan jika Anda benar-benar meminta /, -atau ::

  • dd '/'yyyy '/'MM ss ':'HH ':'mm

Anda akan mendapatkan:

  • 22/2019/10 37:10:24

daripada:

  • 22-2019-10 37∶10∶24
Ian Boyd
sumber
Saya tidak berpikir string format tanggal dan waktu. NET identik dengan GetDateFormat. Serupa mungkin, tetapi misalnya artinya yyyyyberbeda. Mengingat bahwa pertanyaan ini mendapatkan banyak perhatian, dan ini tentang C # /, saya sarankan untuk memperbaiki pernyataan ini dan menautkan ke .NET docs.
canton7