0

DateTimeのイライラする問題です。日付ピッカーがオンになっているセクションがあり、カルチャがen-GBに設定されていて、日付が2012年1月11日(dd / mm / yyyy)の場合、カルチャは中国語(zh -CN)日付は古いカルチャ形式で渡され、DateTimeに変換されると、カルチャが必要な2012/1/11になります(yyyy / mm / dd)。

11が月であるため、2012/11/1になるはずなので、これが私が遭遇した唯一の文化であり、変換がうまくいかないようです。

正しく変換されない理由を誰かが知っていますか?

申し訳ありませんが、これは十分に明確ではないための私のせいです。詳細が必要です。

ユーザーが日付範囲を選択できるレポートフォームがあります。このフォームでは、日付範囲ピッカー(http://www.filamentgroup.com/lab/update_date_range_picker_with_jquery_ui/)を使用して、フィルターに送信される読み取り専用テキストボックスに入力します。結果。ユーザーはドロップダウンから現在のカルチャを選択できます(ブラウザの設定を変更せずに英語と中国語を簡単に入れ替えたいため、ユーザーに必要です。カルチャがen-GBの場合、日付範囲の文字列は「01/01/2012-」になります。 -2012年1月1日から2012年11月1日までの2012年1月11日。これはURLに保存されます(例:&DateRange = 01%2F01%2F2012 + --- + 01%2F11%2F2012)。

これで、ユーザーが中国語に切り替えると、すべて同じクエリパラメーターを使用して現在のページが呼び出されますが、カルチャパラメーターも変更されます(カルチャをURLパラメーターでオーバーライドできます)。つまり、日付形式は2012年1月11日です。クエリ文字列、これを使用して渡す場合:

DateTime.TryParse(endDateString, out endDate);

DateTimeオブジェクトには、2012年11月1日ではなく2012年1月11日の日付が含まれています。

日付文字列が含まれているカルチャ情報を保存し、カルチャが交換された場合にそれを使用して新しいカルチャ情報に変換する方法はありますか?

en-GBからen-IN(インド)へのスワップは、es-MX(メキシコ)へのスワップと同様に正常に機能するようです。中国語のようですが、これらの言語の日付形式に基づく持ち寄りの可能性があります。

これを読むために時間を割いてくれてありがとう。

4

2 に答える 2

0

このような場合、日時を処理せずに保存するだけの場合は、文字列を使用して日時を移動します。その後、データベースに保存する前に形式を変更できます。

于 2012-11-01T13:19:14.660 に答える
0
DateTime.TryParse(endDateString, out endDate);

サーバーでデフォルトのカルチャを使用しています。

基本的な解決策は次のとおりです。

var ci = GetCultureInfoFromRequest();
DateTime.TryParse(endDateString, out endDate, ci);
于 2012-11-01T15:14:38.460 に答える