2012-02-09 6 views
-1

ファイアバードのデータベースがありますが、一部のテーブルにタイムスタンプがあります。たとえば、私のデータベースは、「1/4/2012 3:08:44 PM」または「12/20/2011 4:38:02 PM」という日付を返します。私はTryParseExactを使用すると、以下のようにコードがある:ファイアバードの日付を解析できません

DateTime.TryParseExact(results[i][1], "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt) 

私は ":MM:MM/DD/YYYYのHHのSS TT" のような多くのフォーマットを試みたが、それらのどれも働きました。私を助けたり、私はこの時間を夢中にされます...

+0

私はすぐにLinqpadにあなたのコードをテストし、両方の文字列(「2012年1月4日午前3時08分: 44 PM」、「12/20/2011 4:38:02 PM」)が正常に解析されました。解析が失敗する別の例を教えてください。 – afrischke

+0

"G"を使用して解決しました:[link](http://msdn.microsoft.com/en-us/library/az4se3k1.aspx) – Mehmed

+0

'resultst [i] [1] ] 'はまだDateTimeではありませんか? –

答えて

0

は、それがかもしれだからATが

// Parse date-only value without leading zero in month using "d" format. 
// Should throw a FormatException because standard short date pattern of 
// invariant culture requires two-digit month. 
dateString = "6/15/2008"; 
try { 
    result = DateTime.ParseExact(dateString, format, provider); 
    Console.WriteLine("{0} converts to {1}.", dateString, result.ToString()); 
} 
catch (FormatException) { 
    Console.WriteLine("{0} is not in the correct format.", dateString); 
} 

を見て、この記事

http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

重要な部分を見てほしいですデータベースが標準パターンを戻していないことを確認します。これは例外をスローするだろうと私にはばかげているようだ。そして、この例では、あなたのものではない「日付のみの」値だけを言っています。

あなたは、文字列に日付を持っている場合は、古い手動フィックスアップを行うことができます:

public static string FixDate(string date) 
{ 
    return (date.IndexOf('/') == 1) ? "0" + date : date; 
} 
関連する問題