2011-05-09 92 views
17

可能是一個簡單的問題 -DateTime.Parse美國日期格式C#

我正在讀取大量文件中的數據。

我的問題是,當我從美國文件中的日期正在讀,我分析它,像這樣:

DateSold = DateTime.Parse(t.Date) 

這解析字符串t.Date成日期格式,但它格式化美國約會到歐洲日期,例如

如果日期是文件03/01/2011中,它被解讀爲2011年1月,3日時,它應該是2011年3月

1日是否有這樣做的一種方式以便它格式化爲歐洲的日期?

回答

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

日期時間本身沒有格式化,只有當你將其轉換爲與字符串的格式是相關的。

要查看與美國格式的日期,你解析時傳遞格式ToString方法

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

使用DateTime.ParseExactDateTime.TryParseExact,當你與ToString格式化過指定格式的字符串。

請注意,在解析後沒有「美國約會」這樣的事情。 DateTime值有格式化的概念。

這聽起來像你對Parse部分實際上並不感興趣,而是格式化部分,例如,

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

...但我建議您可以控制解析格式化明確。

如果您有不同的文件格式,當您讀取每個文件時,您需要提供不同的格式字符串。那你怎麼樣格式這個數據是一個單獨的決定。

13

如果您正在解析某個文件(特別是美國格式文件)的日期,那麼只需將美國文化信息傳遞到解析函數中,如下所示:

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

這樣你可以簡單地換出解析所需的每個不同區域的文化字符串。此外,您不再需要研究每種文化的具體日期時間格式細微差別,因爲.Net會按照您的設計照顧您。

+0

這根本不回答問題。OP在詢問如何解析美國約會到歐盟,你只是告訴他如何解析美國約會到美國約會。 – mathgenius 2017-02-09 13:39:51

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.Parse()'方法的重載來解決。指定正確的文化信息:'dateValue = DateTime.Parse(dateString,new CultureInfo(「fr-FR」,false));' – opewix 2012-09-14 19:09:58

+0

接受的答案要好得多。 – 2012-09-25 01:53:31

+2

你的1和5是相同但不同的輸出,'string formatteddate = DateTime.Now.ToString(「d」)'。這怎麼可能? – 2015-06-15 14:59:22

相關問題