1

私はそのような質問がここにたくさんあることを知っています. 一度通ってください

string2012 年 10 月 9 日など、現在の日付のテキスト ボックスから来ています。私のクラス プロパティはDateTime?型です。私は使用してConvert.ToDateTime(datetime_string_from_textbox)いますが、それは私にFormatException. ここでDateTime.ParseExact(string, format, CultureInfo, DateTimeStyle)Jon Skeetの提案に従って試しましたが、それでも同じ例外が発生しました。

もう 1 つ — 私のローカル マシンの日時形式はdd-mm-yyyy. これをmm/dd/yyyyフォーマットに切り替えると、コードは正常に機能します。DateTimeしたがって、基本的に、地域の設定、設定、またはローカルマシンへの依存関係に関係なく、有効な日時文字列をオブジェクトに解析する方法を知りたいです。

これは可能ですか?

更新:使用中のコード

employee.JoiningDate = DateTime.ParseExact(string.Format("{0} 00:00:00", JoiningDate.Text.Trim()), "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal); 

既存の問題と必要な解決策

私のシステムの日時は 2012 年 10 月 24 日 (つまり、10 月 24 日) を示しており、テキスト ボックスの日付も有効であるため、テキスト ボックスには 2012 年 10 月 17 日 (つまり、10 月 17 日) があり、デプロイ後に再びクライアントの日時が表示されます。形式が不明になるため、地域の設定に関係なく、有効な日時文字列を解析する一般的な方法が必要です。これは可能ですか?

4

4 に答える 4

5

これはうまくいくはずです:

var date = DateTime.ParseExact(str, "M/d/yyyy", CultureInfo.InvariantCulture);

以下でテストしたとおり: 

ここに画像の説明を入力

于 2012-10-24T11:33:59.437 に答える
0

それが機能する場合は、次を試してください

var formatInfo = new DateTimeFormatInfo();
formatInfo.ShortDatePattern = "MM/dd/yyyy";
DateTime.Parse(date, formatInfo); 
于 2012-10-24T11:39:58.367 に答える
0

次の方法を使用して、日付を国際日付形式にフォーマットしてみてください。

DateTimeを国際形式でどのようにフォーマットしますか?

また、現在の文化についてこれを確認できます。

デフォルトの日時形式を設定するc#

于 2012-10-24T11:36:21.667 に答える
0

それは完全にマシンの設定に依存します。DateTime.ParseExact(str, "dd/MM/yyyy", CultureInfo.InvariantCulture);英国フォーマットでは機能しますが、米国フォーマットではフォーマット例外が発生します。したがって、マシンの設定に応じたフォーマットを使用してください。

于 2012-10-24T11:36:32.420 に答える