0

文字列が 1 つあり、日付形式が 01/04/2013 のように見えます

為にstring date="01/04/2013"

上記の文字列形式は、01 は日付、04 は月、2013 年です。

今私は使用していますconvert.todatetime()

下記参照 :

DateTime **DateTimeValue** =Convert.ToDateTime(date);

私のシステムで返される DateTimeValue : 01-04-2013T00:00:00 // Date 1st and month 2nd

しかし、同じ DateTimeValue を変換すると、他のシステムでは:04-01-2013T00:00:00 //月 1 日と日 2が返されます

なぜConvert.DateTime()異なるシステムで異なる日付を返すのですか????

答え :

今、私は自分の DataBase Coloumn DataType DateTime を Nvarchar に変更しました。だから私は DateTime に変換したくないはずです。これはすべてのシステムで機能しています。

みんなありがとう

4

4 に答える 4

4

Convert.DateTime() が異なるシステムで異なる日付を返すのはなぜですか????

現在のカルチャを使用して文字列を日時に変換するためです。月が日付の前に来る文化もあれば、その逆の文化もあります。

カルチャまたは使用CultureInfo.InvariantCulture( に似ていますen-US) を指定するか、形式を指定できる場所で使用DateTime.ParseExactできます。

string date="01/04/2013";
 // day 4 month 1
DateTime dt = DateTime.Parse(date, CultureInfo.InvariantCulture); 

また

// day 4 month 1
DateTime dt = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

一般に、TryParseメソッドを使用して、入力が正しい形式であるかどうかを検出することをお勧めします。

于 2013-04-23T08:07:11.933 に答える
0

これは、地域/ローカリゼーションの設定です。これらの設定を知らずにこれが起こらないようにする方法は、日付文字列を次のように設定することですyyyy-mm-dd。たとえば、2013-04-01これは常に 2013 年 4 月 1 日として表示されます。

ここに関する詳細情報Convert.ToDateTime: http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx

関連するビット:

value が null でない場合、戻り値は、現在のカルチャ用に初期化された DateTimeFormatInfo オブジェクトの書式設定情報を使用して、value で DateTime.Parse メソッドを呼び出した結果です。

于 2013-04-23T08:03:27.903 に答える
0

PC のコントロール パネルに移動すると、地域と言語のオプションがあります (これは、Windows のバージョンによって名前が異なる場合があります)。ここから、長い日付と短い日付と時刻の形式を指定できます。

形式をまったく同じにしたい場合は、こちらで説明されているように、形式を設定して datetime で ToString() メソッドを使用します。

于 2013-04-23T08:05:07.487 に答える
0

あなたはこれを試すことができます:

string date = "01/04/2013";
        DateTime dtTime;
        if (DateTime.TryParseExact(date, "dd/MM/yyyy",
           System.Globalization.CultureInfo.InvariantCulture,
           System.Globalization.DateTimeStyles.None, out dtTime))
        {
            Console.WriteLine(dtTime);
        }
于 2013-04-23T08:08:36.420 に答える