0

コンピューターにWindows7をインストールしています。問題は、コンピュータを再起動すると、システムの日付形式が変更されることです。日付形式を修正する必要がありますが、方法がわかりません。mvc 3にアプリケーションが組み込まれていて、文字列から日時への変換用のコードがあります。システム日時の形式が文字列と一致しない場合 string is not in proper formatは、システム日時を検索する日時に変換するためのエラーが表示されます。例外は次のコードでスローされます。

 DateTime startDate = Convert.ToDateTime(start);

どこ、

string start = sundayOfLastWeek.ToString("MM/dd/yyyy HH:mm:ss");

または、システムの日時に関係なく常に機能するコードを変更できるようにするための代替手段はありますか?

4

3 に答える 3

4

DateTime.ParseExactを次の形式で使用します"MM/dd/yyyy HH:mm:ss"

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

編集:@JohnWooからのコメントに基づく

次のように、文字列配列をDateTime.Parseに渡すことができます。

string[] dateFormats = new string[] { "MM/dd/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "d/MM/yyyy" };
DateTime startDate = DateTime.ParseExact(start,
                                         dateFormats, 
                                         CultureInfo.InvariantCulture,
                                         DateTimeStyles.None);
于 2012-09-07T06:23:57.427 に答える
1

値の永続性には、.ToString(CultureInfo.InvariantCulture)およびParse(value、CultureInfo.InvariantCulture)を使用します。表示目的で値をレンダリングする場合にのみ、CultureInfoを省略してください。一部の特定のデータ形式では、特別な形式規則が存在する場合があります-それらに従ってください。

データを回復するには、ParseExactを使用します。

于 2012-09-07T06:29:08.400 に答える
0

ハビブがすでに答えたように:

//Add any format you want or expect
string[] formats = { "MM/dd/yyyy HH:mm:ss", "dd.MM.yyyy HH:mm:ss" };
DateTime startDate = DateTime.ParseExact(start, formats,
                System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);

それは役立つはずです。

于 2012-09-07T06:31:44.440 に答える