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です。

string yyyy'-'MM'-'dd'T'HH':'mm':'ssでは、-andを囲む引用符は不要Tです。これらはカスタム形式の文字列ではないため、常に文字列リテラルとして解釈されます。ただし、現在のカルチャに適した時間区切り文字として評価される: 形式指定子です。これを引用すると、現在の文化に関係なく':'、リテラル文字:が常に使用されることになります。


2

これがWindowsのGetDateFormat関数で使用される形式と同じであることを知っておくと便利です。アポストロフィを使用して、結果の文字列に挿入するリテラルを示します。

文字列フォーマットコードの詳細については、以下を参照してください。

文字列では、文字どおりハイフン、コロン、およびT文字を追加する必要があることを示しています。

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

一般に、文字通りハイフン(-)またはコロン(:)、またはスラッシュ(/)を使用して日付/時刻を作成することは望ましくありません。スラッシュとコロンを使用して日付/時刻を構築しない文化では、これらは間違っているからです。

  • 2019年10月22日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ص
  • 1398/07/30 10:19:54ق.ظ

指示したい場合に何をしたいか:

  • 「ここに日付区切り文字を入れるべきです」
  • 「ここに時間区切りを入れるべきです」

特別な使用です:

  • 日付区切り文字の置換文字(/)
  • 時間区切り文字置換文字(:)

そして、次のようなフォーマットを作成します。

dd / yyyy / MM ss:HH:mm

日付を次のように示す必要のあるビジネスニーズがわかりません。

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

しかし、このようにしてローカライザはカルチャの正しい日付と時刻のセパレータを挿入します。

一方、あなたがあれば文字通りを求め/-または:

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

あなたは文字通り得るでしょう:

  • 2019/10/22 37:10:24

のではなく:

  • 22-2019-10 37∶10∶24

.NETの日付と時刻の形式文字列はと同じではないと思いますGetDateFormat。おそらく似ていますが、たとえばの意味yyyyyが異なります。この質問が注目を集め、C#/に関するものであることを考えると、代わりにこのステートメントを修正して.NETドキュメントにリンクすることをお勧めします。
canton7
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.