2013-02-05 21 views
9

日付を「01/22/2013 10:00:00」から「22/01/2013 10:00:00」に変換したいのですが、私の方法で自分の日付文字列を認識できません。私はこのエラーを取得していますDateTimeをUK形式に変換する

DateTime dt = DateTime.ParseExact(StartDate, "MM dd yyyy h:mm", CultureInfo.InvariantCulture); 
      StartDate = dt.ToString("dd/M/yyyy"); 
dt = DateTime.ParseExact(EndDate, "MMM dd yyyy h:mm", CultureInfo.InvariantCulture); 
      EndDate = dt.ToString("dd/M/yyyy"); 

System.FormatException - String was not recognized as a valid DateTime.

ParseExactの正しい文字列の形式は何ですか?

+1

を試してみてください。 – Jon

答えて

10

日付の書式設定が間違っています。米国の場合、01/22/2013 10:00:00MM/dd/yyyy HH:mm:ssです。英国にとってはdd/MM/yyyyなど

DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

dt.ToString("dd/MM/yyyy"); 

注だろう私はHHを使用する理由である、ここで24時間時計を想定しています。 12時間の時計が必要な場合はhhが必要ですが、AM/PMなども入れてください。

1

あなたはスラッシュを使用していて、日付文字列に「秒」の部分があります。

string StartDate = "01/22/2013 10:00:00";    
DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 
StartDate = dt.ToString("dd/M/yyyy"); 
+0

'hh'は正しくないので、' HH'でなければなりません。 – Jon

+0

有効なので有効です。 23を使って何が起こるかを見てみてください。 – Lloyd

+0

イギリス時間はam/pm afaikを使用していますか? – daryal

5

使用このコード:

DateTime dt = DateTime.ParseExact(StartDate, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture); 
      StartDate = dt.ToString("dd/MM/yyyy hh:mm:ss"); 

お知らせParseExactのフォーマット文字列に変更あなたはParseExact方法で提供形式を変更する必要があります。 MM:ss`でもドキュメントを見ずに

1

は、それが文字列でなければならないこと `MM/DD/YYYY HH見るのは簡単だ。この

var str = "01/22/2013 10:00:00"; 
var date = DateTime.ParseExact(str, "MM/dd/yyyy HH:mm:ss", new CultureInfo("en-GB")); 
var res = date.ToString("dd/MM/yyyy HH:mm:ss", new CultureInfo("en-GB")); 
Console.WriteLine(res); 
Console.WriteLine("22/01/2013 10:00:00" == res); 
関連する問題