2011-05-09 19 views
17

おそらく簡単な質問 -DateTime.Parseアメリカの日付形式C#

私はいくつかのファイルからデータを読み込んでいます。

私の問題は、私はアメリカのファイルから日付で読んでいるとき、私はそうのようにそれを解析することを、次のとおりです。

DateSold = DateTime.Parse(t.Date) 

これは、日付形式に文字列t.Dateを解析し、しかし、それはフォーマットヨーロッパ日付へのアメリカの日付、例えば

日は2011年3月1日などのファイルであれば、それは、2011年3月

の第一であるべきときには、2011年1月の第3回として読み取られるがこれを行う方法はありますそれはヨーロッパの日付にフォーマットするように?

答えて

28
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture); 

DateTime自体にはフォーマットがありません。それは、そのフォーマットが関連する文字列に変換するときだけです。

は、アメリカの形式を使用して日付を表示するには、解析時にToStringメソッド

string americanFormat = dt.ToString("MM/dd/yyyy"); 
5

使用DateTime.ParseExactまたはDateTime.TryParseExactにフォーマットを渡し、そしてあなたもToStringでフォーマットしたときに書式文字列を指定します。

パーズされた後、「アメリカの日付」というようなことはありません。 DateTimeの値は、でなく、というフォーマットの概念を持っています。

Parseの部分には実際には興味がありません。

string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture); 

...しかし、私はあなたがパースの両方が明示的に書式設定を制御することをお勧めします。

ファイル形式が異なる場合は、各ファイルを読むときに異なる形式の文字列を指定する必要があります。あなたはどのようにフォーマットデータは別の決定です。

1

フォーマットを事前に知っている場合は、フォーマット文字列としてアメリカ式を使用してDateTime.ParseExactを使用できます。

13

特に米国の書式設定されたファイルから日付を解析する場合は、次のように米国文化情報を構文解析関数に渡します。

var usCulture = "en-US"; 
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false)); 

このようにして、構文解析に必要な異なる領域ごとに文化ストリングを簡単に交換することができます。また、.Netが設計通りにこれを処理するため、各文化の特定の日時フォーマットのニュアンスを調べる必要がなくなりました。

+0

これは全く質問に答えません。OPは米国の日付をEUに解析する方法を尋ねていましたが、米国の日付を米国の日付に解析する方法を単に教えているだけです。 – mathgenius

0
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012  
string formatteddate=DateTime.Now.ToString("D") // output: Monday, November 08, 2012  
string formatteddate=DateTime.Now.ToString("f") // output: Monday, November 08, 2012 3:39 PM  
string formatteddate=DateTime.Now.ToString("g") // output: Monday, November 08, 2012 3:39:46 PM  
string formatteddate=DateTime.Now.ToString("d") // output: 11/8/2012 3:39 PM 

ここでは、asp.netの日付/時刻形式を示します。

http://dateformat.blogspot.in/2012/09/date-time-format-in-c-aspnet.html

+0

質問は、出力の書式設定ではなく、datetimeの解析についてです。問題は、 'DateTime.Parse()'メソッドのオーバーロードを使用して解決できます。正しい文化情報を指定する: 'dateValue = DateTime.Parse(dateString、new CultureInfo(" fr-FR "、false));' – opewix

+0

受け入れられた答えははるかに良いです。 –

+2

あなたの1と5は同じですが異なる出力です、 'string formatteddate = DateTime.Now.ToString(" d ")'。そんなことがあるものか? –