DateTime.Parse 美国日期格式 C#

Posted

技术标签:

【中文标题】DateTime.Parse 美国日期格式 C#【英文标题】:DateTime.Parse American Date Format C# 【发布时间】:2011-08-21 18:35:47 【问题描述】:

可能是一个简单的问题 -

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

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

DateSold = DateTime.Parse(t.Date)

这会将字符串 t.Date 解析为日期格式,但是它将美国日期格式化为欧洲日期,例如

如果文件中的日期为 03/01/2011,则读取为 2011 年 1 月 3 日,而应该是 2011 年 3 月 1 日。

有没有办法让它格式化为欧洲日期?

【问题讨论】:

【参考方案1】:
var dt = DateTime.ParseExact(t.Date, "MM/dd/yyyy", CultureInfo.InvariantCulture);

DateTime 本身没有格式,只有当您将其转换为字符串或从字符串转换时,格式才是相关的。

要以美国格式查看日期,请将格式传递给 ToString 方法

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

【讨论】:

【参考方案2】:

如果您要从一个特别是美国格式文件的文件中解析日期,那么只需将美国文化信息传递给解析函数,如下所示;

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

这样,您可以简单地换出解析所需的每个不同区域的文化字符串。此外,您不再需要研究每种文化的特定日期时间格式的细微差别,因为 .Net 会按照设计为您解决这个问题。

【讨论】:

这根本不能回答问题。 OP 在询问如何将美国日期解析为欧盟日期,您只是告诉他如何将美国日期解析为美国日期。 Brian Scott 完全按照 OP 的要求做了。存储在 dateValue 中的日期是将 dateString 解释为美国日期 - 但如果现在它是结构化的,那么您可以要求 dateValue.Month。如果您想以欧洲风格显示它,请继续将其转换回字符串,如接受的答案中所示。这个答案非常有用,因为它显示了使用不同的 CultureInfo 进行解析,而不是对日期格式进行硬编码。【参考方案3】:

解析时使用DateTime.ParseExactDateTime.TryParseExact,使用ToString格式化时也要指定格式字符串。

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

听起来您实际上对 Parse 部分并不像格式化部分那样感兴趣,例如

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

...但我建议您明确控制解析格式。

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:
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

【讨论】:

问题是关于解析日期时间,而不是关于格式化输出。可以使用DateTime.Parse() 方法的重载来解决问题。指定正确的文化信息:dateValue = DateTime.Parse(dateString, new CultureInfo("fr-FR", false)); 您的 1 和 5 相同但输出不同,string formatteddate=DateTime.Now.ToString("d")。这怎么可能?

以上是关于DateTime.Parse 美国日期格式 C#的主要内容,如果未能解决你的问题,请参考以下文章

c#中,如何获取日期型字段里的年、月、日?

日期转换(用DateTime的ParseExact方法解析特殊的日期时间)(转)

通过 Ajax 将 Javascript 日期转换为 C#

C#中的时间类

在 DateTime.parse() 中允许空字符串

如何在c#中将字符串转换为日期[重复]