解析美国日期格式C#

解析美国日期格式C#,c#,asp.net,datetime,C#,Asp.net,Datetime,可能是一个简单的问题- 我正在从许多文件中读取数据 我的问题是,当我从一个美国文件中读取日期时,我会像这样解析它: DateSold = DateTime.Parse(t.Date) 这会将字符串t.Date解析为日期格式,但会将美国日期格式化为欧洲日期,例如 如果文件中的日期为2011年1月3日,则该日期应为2011年3月1日,即2011年1月3日 是否有一种方法可以使其格式与欧洲日期一致 var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy",

可能是一个简单的问题-

我正在从许多文件中读取数据

我的问题是,当我从一个美国文件中读取日期时,我会像这样解析它:

DateSold = DateTime.Parse(t.Date)
这会将字符串t.Date解析为日期格式,但会将美国日期格式化为欧洲日期,例如

如果文件中的日期为2011年1月3日,则该日期应为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");
解析时使用或,并在使用
ToString
格式化时指定格式字符串

注意,解析后没有“美国日期”之类的东西。
DateTime
值没有格式化的概念

听起来你对
Parse
部分并不感兴趣,而是对格式化部分感兴趣

string formatted = dt.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
。。。但是我建议您显式地控制解析和格式化


如果您有不同的文件格式,则在读取每个文件时需要提供不同的格式字符串。然后如何格式化数据是一个单独的决定。

如果您提前知道格式,您可以使用,使用美国格式作为格式字符串。

如果您正在解析一个文件中的日期,该文件特别是美国格式的文件,则只需将美国文化信息传递到解析函数中,如下所示:

var usCulture = "en-US";
var dateValue = DateTime.Parse(dateString, new CultureInfo(usCulture, false));
通过这种方式,您只需根据解析所需的不同区域交换区域性字符串。此外,您不必再研究每个区域性的特定日期时间格式细微差别,因为.Net将按照设计为您解决这一问题

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中的更多日期时间格式


问题是关于解析datetime,而不是格式化输出。这个问题可以通过重载
DateTime.Parse()
方法来解决。指定正确的区域性信息:
dateValue=DateTime.Parse(dateString,newcultureinfo(“fr-fr”,false))您的1和5是相同但不同的输出,
string formatteddate=DateTime.Now.ToString(“d”)
。这怎么可能?这根本不能回答问题。OP问如何将美国日期解析为欧盟日期,你只需告诉他如何将美国日期解析为美国日期。Brian Scott完全按照OP的要求做了。dateValue中存储的日期是dateString作为美国日期的解释-但是如果现在它是结构化的,那么您可以请求dateValue.Month。如果要以欧式样式显示,请继续,并将其转换回一个字符串,如接受答案中所示。这个答案非常有用,因为它显示了使用不同的CultureInfo进行解析,而不是硬编码日期格式。