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.

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.


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.