1

C# では、次のような日付の例を渡します。mm/dd/yyyy...

解析後にこれらの結果を示します

 // Example 1
 DateTime t = new DateTime();
 DateTime.TryParse("02/06/2013 00:00:00 PM", out t)

 // Example 2
 DateTime t = new DateTime();
 DateTime.TryParse("02/06/2013 00:00:10 PM", out t)

 // Example 3
 DateTime t = new DateTime();
 DateTime.TryParse("02/06/2013 00:10:10 PM", out t)

結果は

2/6/2013 12:00:00 PM
2/6/2013 12:00:10 PM
2/6/2013 12:10:10 PM

SQLサーバーで日付を渡すときに誤った日付が表示されます。これらのタイプまたは問題を解決する方法。これらのタイプの日付が無効な場合。

4

4 に答える 4

2

DateTime.ParseExact または DateTime.TryParseExact を使用できます

たとえば。

    string dateString = "Mon 16 Jun 8:30 AM 2008"; //Valid
    string format = "ddd dd MMM h:mm tt yyyy";
DateTime dateTime;
if (DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
    DateTimeStyles.None, out dateTime))
{
    Console.WriteLine(dateTime); // 6/16/2008 8:30:00 AM 
}

UTC の DateTime を解析する

DateTime.ParseExact(inputDate, "yyyy-MM-ddTHH:mm:ss.0000000Z", null).ToUniversalTime();

M/d/yyyy 形式で DateTime を解析する

DateTime.ParseExact(inputDate, "M/d/yyyy h:mm", CultureInfo.InvariantCulture);

于 2013-02-06T09:56:53.447 に答える
2

日付を次の形式でフォーマットできれば、より良い結果が得られます。yyyy-MM-ddそうしないと、ロケール関連の問題が発生する可能性があります

于 2013-02-06T09:17:58.827 に答える
2

カルチャに関係なく、 DateTime.TryParseExactを使用して特定の形式を解析できます。dd-MM-yyyy HH:mm:ss PM が必要だと思います。

于 2013-02-06T09:20:10.517 に答える
0

表示する解析は問題ないようです。それらは、現在のスレッドの現在のカルチャに大きく依存します。気に入らない場合CultureInfo.InvariantCultureは、通話でフォーマットプロバイダーとして指定してください。TryParse

SQLサーバーに関するあなたの質問は不明確です。そのサーバーにはどのSQLソフトウェアとどのロケール設定がありますか?どのようにそれと通信しますか?

DateTime値を取得したらt、さまざまな方法でフォーマットできます。たとえば、

t.ToString("O")

完全な精度で「ビッグエンディアン」文字列を取得します。標準の日付と時刻の形式の文字列およびカスタムの日付と時刻の形式の文字列を参照してください。

PS!t宣言するとき(out引数に使用するとき)に割り当てる必要はありません。

于 2013-02-06T09:58:16.057 に答える