7

答えを求めてstackoverflowを検索しましたが、運がありません。私はWindowsアプリケーションを開発しており、さまざまな日付形式の文字列をいくつか持っています.

dd/MM/yyyy
MM/dd/yyyy
MM-dd-yyyy
dd-MM-yyyy
dd/MM/yyyy hh:mm::ss
MM/dd/yyyy hh:mm::ss
etc...

しかし、一般的な形式に変換する必要があります - dd/MM/yyyy. アプリケーションは、異なるカルチャの任意の Windows マシンで実行できます。

それを行う正しい方法は何ですか?

編集:もう1つ、着信文字列の形式がわからない場合があります。

前もって感謝します。

4

4 に答える 4

8

DateTime.ParseExactさまざまなパターンをフォーマットとして使用します。

解析後に本当に文字列表現を使用する必要がある場合は、関心のある明示的な形式で のToStringメソッドを使用DateTimeします (カルチャに影響されないようにします)。DateTimeただし、これは形式に依存しないため、 を保持することをお勧めします。

于 2012-07-10T07:18:48.997 に答える
3

異なる区切り記号を使用する形式 (つまり、「/」と「-」) を区別できます。しかし、10/11/2010 などの日付が 11 月 10 日または 10 月 11 日を表しているかどうかは、どうすればわかりますか? 1 つの数値が 12 より大きくない場合、正確な形式を知らずにこれを行う信頼できる方法はありません。

他の人が指摘したように、正確な形式がわかっている場合、を使用できますDateTime.ParseExact

于 2012-07-10T07:20:52.377 に答える
0

同じ不明な形式の多くの日付を含むインポート ファイルを処理している場合は、さまざまな形式を試して、形式エラーが発生しない形式が正確にあることを期待できます。

別の言い方をすれば、「日付」を 3 つの数値に分割し、それぞれの数値の値の範囲を確認します。値 > 1900 は年になります。1 から 31 までの値が見つかった場合、それらは日になります。1 から 12 までの値は月かもしれませんが、日かもしれません。各パーツを識別してみてください。

最善の方法は、これらの日付の供給元に形式を尋ねることです。

于 2012-07-10T07:32:36.137 に答える
0

このプログラムを異なるカルチャで実行するには、この文字列形式のカルチャを識別する関数を作成してから、Datetime.Parse を使用する必要があると思います

于 2012-07-10T07:50:22.763 に答える