DateTime.Parse American Date Format C#

本文关键字:Format Date American Parse DateTime | 更新日期: 2023-09-27 17:55:53

可能是一个简单的问题-

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

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

DateSold = DateTime.Parse(t.Date)

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

如果文件中的日期为 03/01/2011,则读取为 2011

年 1 月 3 日,而此时应为 2011 年 3 月 1 日。

有没有办法做到这一点,使其格式化为欧洲日期?

DateTime.Parse American Date Format C#

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

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

若要使用美式格式查看日期,请将格式传递给 ToString 方法

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

如果要从专门是美国格式的文件解析日期,则只需将美国区域性信息传递到解析函数中,如下所示;

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

这样,您可以简单地根据分析所需的不同区域交换区域性字符串。此外,您不再需要研究每种区域性的特定日期时间格式细微差别,因为 .Net 将按照设计为您处理此问题。

解析

时使用DateTime.ParseExactDateTime.TryParseExact,并在使用ToString格式化时指定格式字符串。

请注意,解析后没有"美国日期"这样的东西。DateTime没有格式的概念。

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

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

。但我建议您显式控制解析格式设置。

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

如果您提前知道格式,则可以使用 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