2012-02-09 15 views
2

日時を変換する方法を知る最良の方法は何ですか? dd/mm/yyyyはまだ私がmm/dd/yyyとして日付を取っていると私は異文化間での日時変換

DateTime.Convert(); 
DateTime.Parse(); 
DateTime.TryParse(); 

をしようと私のどちらかが何を取り戻すないか、それがクラッシュしたので、とき は今のところ私のコンピュータはセットアップです。今私はmm/dd/yyyy形式についてそれを伝えることができ、それはおそらく変換するでしょう。しかし、問題は、これらの日付はユーザーがアップロードしたファイルから来ていることです。

どのような形式の組み合わせでもかまいません。私はそれを行う方法を見つけようとしています。

私が見る問題は、アップロードされたファイルの日付を見ているので、ブラウザーの日付形式が助けになるかどうかはわかりません。

私はasp.net mvcを使用しています。私は日付形式を自動的に処理するソリューションを得ようとしていますので、ユーザーに日付形式について質問する必要はありません。ユーザーが続行する可能性は低い)

+3

「02/04/2012」は4月2日か2月4日ですか? – dtb

+0

chobs - あなたはロケールの文化を見つけ出し、それに基づいて日付に取り組むことができました!いいえ?? (例えば:http://stackoverflow.com/questions/2288383/where-is-the-system-locale-culture-set-for-netを参照してください) –

答えて

1

いいえ、値がサーバー上にあると、ユーザーが使用する日時形式を自動的に把握することはできません。正しく解析するためには、より多くの情報が必要です(たとえば、文化に応じて1/2/3の日付が異なる場合があります)。

は、次のソリューションのいずれかを検討します。

  1. は標準形式(すなわちISO 8601 - 2012-02-09)内のテキスト表現に入力された日付を変換し、あなたがそれを送信する前に、クライアント上でJavaScriptを使用してサーバー。コードはd.getUTCFullYear()+"-" + d.getUTCMonth() + "-" + d.getUTCDate()のようになります。
  2. 変換する日付の値とともにサーバーにローカルカルチャ情報を送信し、サーバー上で変換を実行します。
  3. ユーザーに特定の形式で日付を入力させます(空白のテキストボックスではなく、「月」、「日」、「年」という3つのテキストボックスを使用します)。
+0

ダングは、ユーザーができるだけ少ない場合は、はるかに優れています。 – chobo2

+0

@ chobo2ユーザーは変換自体を行う必要はありません。あなたのユーザーがウェブブラウザを介してあなたのアプリを叩いている場合は、JavaScriptを使って変換を行ってから、サーバに送信してください。ユーザーが「1/2/3」と入力したときの意味を知っている唯一の場所はブラウザです。これは、値がサーバーに到達する前に行うべき変換です。 [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601)は、ローカルのDateTime表現を普遍的な値に変更することを扱う際のあなたの友人です。 Alexeiはこの問題を解決するための唯一の選択肢を提示しました。 –

1

chobo2(I 'のハンドルを' のような):)

ロケールの文化を検出し、意のままに、その上で動作することができます。ポインタのために、以下のSO Q/Aを参照してください。

Where is the system locale/culture set for .Net

キーには、特に何も設定しますが、ロケールを識別し、それに応じて行動する必要がないことです。

+0

それは私にサーバーの文化を与えるだけではありませんか? – chobo2

+0

実際には、正解です。私は以前、「古い人生」で私のマスターテンプレートからjavascript関数を送信してロケールを発見しました。しかし、これはjavascriptが有効になっているため依存度が高いため、部分的にしかあなたのニーズをカバーすることはできません(最近、おそらく> 75%)。スリムオプション)。これを閉じるためにセッションとjsの機能のコンボを調べてみてください! –

関連する問題