可能是一个简单的问题 -
我正在读取大量文件中的数据。
我的问题是,当我在美国文件中阅读日期时,我会像这样解析它:
DateSold = DateTime.Parse(t.Date)
将字符串t.Date解析为日期格式,但它将美国日期格式化为欧洲日期,例如
如果日期在2011年1月3日的文件中,则为2011年1月3日,即应该是2011年3月1日。
有没有办法做到这一点,以便格式化为欧洲日期?
答案 0 :(得分:32)
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture);
DateTime本身没有格式化,只有当您将其转换为格式相关的字符串时才会格式化。
要使用美国格式查看日期,请将格式传递给ToString方法
string americanFormat = dt.ToString("MM/dd/yyyy");
答案 1 :(得分:17)
如果要从特定于美国格式的文件的文件中解析日期,则只需将美国文化信息传递到解析函数中,如下所示;
var usCulture = "en-US";
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false));
这样您就可以根据解析所需的不同区域简单地换出文化字符串。此外,您不再需要研究每种文化的特定日期时间格式细微差别,因为.Net将按照您的设计为您解决此问题。
答案 2 :(得分:7)
解析时使用DateTime.ParseExact
或DateTime.TryParseExact
,并在使用ToString
格式化时指定格式字符串。
请注意,在解析之后,没有“美国约会”之类的东西。 DateTime
值具有否格式化概念。
听起来你对Parse
部分实际上并没有像格式化部分那样感兴趣,例如
string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
...但我建议您明确控制解析和格式。
如果您有不同的文件格式,则在阅读每个文件时需要提供不同的格式字符串。您如何格式化数据是一个单独的决定。
答案 3 :(得分:1)
如果您提前知道格式,可以使用美国格式作为格式字符串DateTime.ParseExact。
答案 4 :(得分: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