2012-03-20 4 views
0

これは繰り返し発生する問題ですが、多くの研究を行ってもこれを実行することはできません。文字列をDateTimeに変換したいDateTime形式をMM/DD/YYYYからYYYY-MM-DDに変換できません

public DateTime ConvertToDateTime(string thisDate) 
{ 
    return DateTime.ParseExact(thisDate, "yyyy-MM-dd", CultureInfo.InvariantCulture); 
} 

(編集)

私は、パラメータとして"2012-03-07"を与えると私は03/07/2012 12:00AMあるDateTimeを取得します。私はそれを返すように望んでいたとき:2012-03-07 00:00:00

+0

月と日を逆にしたいと言っていますか?または、その特定の文字列形式で出力したいのですか? –

+4

フォーマットをデータと混同しないでください。真夜中は真夜中です。デフォルトと異なるフォーマットにしたい場合は、それを変更してください。 '.ToString(" yyyy-dd-MM hh:mm:ss ")' –

+0

@Paul、私の間違い!私は最初の投稿を編集しました。 –

答えて

8

あなたのコードが正しいかお試しください。あなたの期待は間違っています。

メソッドがDateTimeを返す場合、の形式はではありません。つまり、より正確には、文字列形式とは関係のないバイナリのインメモリ形式です。

デバッガは、あなたに表示するようにDateTimeをフォーマットしますが、DateTime値自体には影響しません。使用する形式は、おそらくロケール設定によって決まります。

ユーザーにDateTimeを表示するか、または文字列として他の機能に渡す場合は、ToStringオーバーロードのいずれかを使用して好きなようにフォーマットできます。

あなたが指定した関数の戻り値を表示または渡している可能性があります。もしそうなら、あなたが与えた関数ではなく、DateTimeを表示または渡すコードにエラーがあります。そのような場合は、回答を編集してそのコードを追加してください。おそらくそれを修正する手助けがあります。

2

この

public String ConvertToDateTime(string thisDate) 
{ 
    return DateTime.ParseExact(thisDate, "yyyy-MM-dd", 
      CultureInfo.InvariantCulture).toString("yyyy-MM-dd"); 
} 
+0

です。 –

+0

私は 'DateTime'オブジェクトを返したかったのです! –

+0

DateTimeにはフォーマットがありません。あなたがそれをDateTime.toString( "yyyy-MM-dd")を使って文字列に変換する必要があるフォーマットではいつでも – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz