-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/dd/yyyy hh:mm:ss tt」などの多くの形式を試しましたが、どれも機能しませんでした。助けてください、さもないと今度は気が狂ってしまいます...

4

1 に答える 1

0

この記事を見てください

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

注目すべき重要な部分は

// 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);
}

そのため、データベースが標準パターンを返していない可能性があります。ただし、これが例外をスローするのはばかげているようです。そして、この例では、「日付のみ」の値を言っているだけですが、あなたのものではありません。

文字列に日付がある場合は、古い手動の修正を行うことができます。

public static string FixDate(string date)
{
    return (date.IndexOf('/') == 1) ? "0" + date : date;
}
于 2012-02-09T01:00:48.597 に答える