Cosa significa una singola citazione all'interno di un formato di data e ora C #?


55

Abbiamo ad esempio questa costante in C #:

System.Globalization.DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern

Ha questo valore:

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

Lo uso nella ParseExactfunzione e quindi yyyy-MM-ddTHH:mm:ssfunziona anche.

Non riesco a capire a cosa servano le virgolette singole.

Risposte:


76

È un delimitatore di stringa letterale .

Qualsiasi cosa tra virgolette singole viene interpretata come un carattere letterale e non verrà interpretata come una stringa di formato personalizzata.

Sono equivalenti a scappare usando una barra rovesciata: dd'T'HH è lo stesso di dd\THH.

Nella stringa yyyy'-'MM'-'dd'T'HH':'mm':'ss, le virgolette non sono necessarie attorno a -e T, poiché non sono stringhe di formato personalizzate, pertanto verranno sempre interpretate come valori letterali di stringa. Tuttavia : è un identificatore di formato , che valuta un separatore di tempo adatto alla cultura corrente. Citandolo come ':'significa che il carattere letterale :sarà sempre usato, indipendentemente dalla cultura attuale.


2

È utile sapere che questo è lo stesso formato utilizzato da Windows GetDateFormat funzione . Usa gli apostrofi per indicare un valore letterale che desideri inserire nella stringa risultante.

Ulteriori informazioni sui codici di formattazione delle stringhe sono disponibili su:

Nella tua stringa sta inducendo che vuole letteralmente aggiungere trattini, due punti e i caratteri T :

aaaa '-'MM'-' gg 'T'HH ':'mm':' ss

In generale non vuoi costruire date / orari con letteralmente un trattino ( -) o due punti ( :), o anche barre (/ ). Perché quelli sono sbagliati per le culture che non usano barre e due punti per costruire date / orari:

  • 22/10/2019 10∶19∶54 ᴀᴍ
        1. 10:19:54
  • 2019.10.22 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
      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
  • 2019/10/22. 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 ق.ظ

Cosa vorresti fare, se vuoi indicare:

  • "qui è dove dovresti mettere il separatore della data"
  • "qui è dove dovresti mettere il separatore di tempo"

È usare lo speciale:

  • carattere di sostituzione separatore data (/)
  • carattere di sostituzione del separatore di tempo (:)

E costruisci un formato come:

gg / aaaa / MM ss: HH: mm

Non so quali esigenze aziendali potrebbero essere necessarie per mostrare una data come:

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

Ma in questo modo il localizzatore inserirà i separatori di data e ora corretti della cultura.

Mentre se si letteralmente chiesto /, -oppure ::

  • gg '/'aaaa '/'MM ss ':'HH ':'mm

Otterrai letteralmente:

  • 22/2019/10 37:10:24

piuttosto che:

  • 22-2019-10 37∶10∶24

Non credo che le stringhe del formato di data e ora di .NET siano identiche GetDateFormat. Simile forse, ma per esempio il significato di yyyyyè diverso. Dato che questa domanda sta ottenendo una notevole attenzione, e riguarda C # /, suggerisco invece di correggere questa affermazione e di collegare i documenti .NET.
canton7,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.