DateTime.ToString(“ dd / MM / yyyy”)がdd-MM-yyyyを返すのはなぜですか?


155

日時を「dd / MM / yyyy」の形式の文字列に変換したい

を使用して変換するたびにDateTime.ToString("dd/MM/yyyy")dd-MM-yyyy代わりに取得します。

私が設定しなければならないある種の文化情報はありますか?


DateTime.ToString( "dd / MM / yyyy");
jimplode

2
私はそれをしました、それは機能しませんでした、問題は日付ではありません、それは「-」です、私が指定したようにそれを「/」にしたいのです
ディスクドライブ

7
mmではなくMMを使用します-mmは月ではなく分を表します。
ロイドパウエル


DateTime.ToStringMSDNドキュメントは、どうしようもなく間違っています: " たとえば、「MM / dd / yyyyHH:mm」形式の文字列は、日付と時刻の文字列を固定形式で表示します...形式文字列は、固定として「/」を使用しますカルチャー固有の設定に関係なく日付の区切り文字。 "
大佐パニック

回答:


243

スラッシュは日付区切り文字であるため、現在のカルチャ日付区切り文字が使用されます。

常にスラッシュを使用するようにハードコーディングしたい場合は、次のようにすることができます。

DateTime.ToString("dd'/'MM'/'yyyy")

2
@spender-一部の文化では彼らはそうです。
ダニエルA.ホワイト

迅速なご回答をありがとうございました。あなたが正しいです。正解をお伝えします
ディスクドライブ

6
次の形式も使用できます。dateTime.ToString(@ "yyyy \ / MM \ / dd")
base2


2
バックスラッシュを使用してフォーマット文字列をエスケープすることもできます:DateTime.Now.ToString( "dd \\ / MM \\ / yyyy");
TomB、2015年

61

DateTimeの2番目のパラメーターとしてCultureInfo.InvariantCultureを渡すと、非常に特殊な形式であっても、必要な文字列が返されます。

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

返される:28 | 02 | 2014


このコードは、受け入れられた回答よりも明確です(つまり、CultureInfoが追加されたことを意味します)。少なくともスラッシュをアポストロフィでエスケープするよりも見栄えが良いです。
セルゲイ

2
エスケープ文字を使用するよりも間違いなく読みやすいです。日付の形式が上書きされることをずっと知らなかったので、少しショックを受けました。
サベージ

10

CultureInfo.InvariantCulture引数として追加:

using System.Globalization;

...

var dateTime = new DateTime(2016,8,16);
dateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);

戻ります:

"16/08/2016"

開発者がtomメソッドを使用している場合、M m ssなどの文字がソリューションで間違った結果になります。たとえば、Datetime.Now.ToString( "yyyy / dd / mm / Month"、CultureInfo.InvariantCulture)は2017/01にならない2017年2月2日、2017年1
Okan SARICAが

@OkanSARICAでは、日付の末尾に” / Month”を付ける場合は、代わりにToStringメソッドの後に指定する必要があります。DateTime.Now.ToString(” yyyy / MM / dd”、CultureInfo.InvariantCulture)+” / Month”;
Mikael Engver 2017年

1

MVCテーブルを使用する場合、次のように機能します。

<td>@(((DateTime)detalle.fec).ToString("dd'/'MM'/'yyyy"))</td>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.