12

また、フォーマット文字列で「/」記号をシールドしようとしましたが、うまくいきませんでした。私の最終的な目標は、区切り記号として「/」記号を使用して日付を取得することです。使えると思いますDateTime.ToString(“dd/MM/yyyy”).Replace('.', '/')が、ちょっとやり過ぎ感があります。

4

4 に答える 4

41

日付/時刻形式文字列の/文字は、「形式プロバイダーの日付区切り文字が何であれ」を表します。フォーマットプロバイダーThread.CurrentCultureが使用されていないため、現在のカルチャは.日付区切り記号として使用されています。

リテラルスラッシュを使用する場合は、単一引用符で囲みます。

dateTime.ToString("dd'/'MM'/'yyyy");

/または、日付の区切り記号が次の形式のプロバイダーを指定することもできます。

dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

上記はすべてMSDN に記載されています

実際の例で違いを確認してください

于 2013-03-07T14:08:20.567 に答える
2

これは、現在の文化に従って、ToStringデフォルトで機能する方法が原因です。

この方法では、現在のカルチャから派生したフォーマット情報を使用します。

したがって、それをオーバーライドします。

string date = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
于 2013-03-07T14:10:53.977 に答える
2
string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
于 2013-03-07T14:08:38.733 に答える
1

これは機能します( に注意してくださいInvariantCulture):

DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)

aCultureInfoが指定されていない場合は、CurrentCultureが使用されます。これが日付の区切り記号としてスラッシュを使用しないカルチャである場合、実際のカルチャの日付区切り記号に置き換えられます。

于 2013-03-07T14:09:38.823 に答える