2016-09-27 3 views
0

日付形式をyyyy-MM-ddに変換したいとします。datetimeを "yyyy-MM-dd"にフォーマットする方法

以下は私のコードです:

var TimeOfOffer = priceCost.TimeOfOfferChange; 
DateTime ChangesOnTimeOfOfferChange = DateTime.ParseExact(TimeOfOffer, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture); 
priceCostViewmodel.TimeOfOfferChange = priceCost.TimeOfOfferChange; 

しかし、私は例外

文字列が有効なDateTimeとして認識されません取得していました。

priceCost.TimeOfOfferChangeは、文字列の形式で、すなわち「2016年9月26日午前4時38分58秒PM」 で、すなわちpriceCostViewmodel.TimeOfOfferChange

+0

フォーマットの問題点は本当に明確ではありません。エラーは*文字列を解析して「DateTime」に関連するものです。 – Filburt

+0

try DateTime.ParseExact(TimeOfOffer、 "dd/MM/yyyy HH:mm:ss"、CultureInfo.InvariantCulture);代わりに – Innat3

+1

「誰か」のように見えるのは、説明を求めたり、情報を追加したりする代わりに、答えを下げることです。それはStackOverflowの仕組みではありません。 – Kilazur

答えて

1

あなたの文字列フォーマットとあなたの日付形式は、実際にないだけでなく、文字列を渡したいです一致。

日付文字列:

9/26/2016 4:38:58 PM 

は形式になります。そのため

M/dd/yyyy h:mm:ss tt 

、次のものが必要です。

DateTime.ParseExact(TimeOfOffer, "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture) 

この時点で、あなたがしたい場合結果はになります私はあなたの代わりにそれらを比較しているので、あなたが実際には、文字列として結果を必要としないことを示唆している、

var dt = DateTime.ParseExact(TimeOfOffer, "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture); 
var formatted = dt.ToString("yyyy-MM-dd"); 

しかし:フォーマットは、それが同じくらい簡単です。

0

あなたは

"DD/MM/YYYYのHH:MM:SSのAA" を使用することができ

代わり

「DD-MM-YYYYのHHの:ミリメートル: ss "

1

これは動作するようです。あなたはそれが供給された正確な形式で文字列を解析する必要があります。正しく解析されたDateTimeオブジェクトを取得したら、任意の形式で出力できます。

string inputFormat = "M/d/yyyy h:m:s tt"; //Use this format for parsing 
string outputFormat = "yyyy-MM-dd"; //Use this format for outputting 

var TimeOfOffer = "9/26/2016 4:38:58 PM"; 
DateTime ChangesOnTimeOfOfferChange = DateTime.ParseExact(TimeOfOffer, inputFormat, CultureInfo.InvariantCulture); 
string output = ChangesOnTimeOfOfferChange.ToString(outputFormat); 
関連する問題