おそらく簡単な質問です-
複数のファイルからデータを読み込んでいます。
私の問題は、アメリカのファイルから日付を読み込んでいるときに、次のように解析することです。
DateSold = DateTime.Parse(t.Date)
これは文字列t.Dateを日付形式に解析しますが、アメリカの日付をヨーロッパの日付にフォーマットします。
ファイル内の日付が03/01/2011である場合、2011年3月1日であるはずの2011年1月3日として読み取られます。
これをヨーロッパの日付にフォーマットする方法はありますか?
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture);
DateTime自体にはフォーマットはありません。フォーマットに関連するのは、それを文字列に変換したり、文字列から変換した場合だけです。
アメリカ形式で日付を表示するには、形式をToStringメソッドに渡します
string americanFormat = dt.ToString("MM/dd/yyyy");
特にUS形式のファイルから日付を解析する場合は、次のように、USカルチャ情報を解析関数に渡すだけです。
var usCulture = "en-US";
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false));
このようにして、解析に必要な異なる地域ごとにカルチャー文字列を簡単に交換できます。また、.Netが設計どおりにこれを処理するため、各カルチャの特定の日時形式のニュアンスを調査する必要がなくなります。
使用する - DateTime.ParseExact
または DateTime.TryParseExact
解析時に、ToString
でフォーマットするときにフォーマット文字列を指定します。
解析後は「アメリカの日付」などは存在しないことに注意してください。 DateTime
値には、フォーマットのno概念があります。
実際にはParse
の部分はフォーマットの部分ほど興味がないようです。
string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
...しかし、解析との両方のフォーマットを明示的に制御することをお勧めします。
ファイル形式が異なる場合は、各ファイルを読み取るときに異なる形式の文字列を指定する必要があります。その後、データをどのようにformatするかは、個別の決定です。
事前にフォーマットがわかっている場合は、 DateTime.ParseExact を使用して、フォーマット文字列としてアメリカのフォーマットを使用できます。
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