DateTime.TryParse-实际解析的内容

本文关键字:TryParse- DateTime | 更新日期: 2023-09-27 18:24:41

我在C#中使用DateTime.TryParse()有点吃力。

本质上,给定一个字符串,我需要提取当前显示区域性中的年份和/或月份和日期。有时我只有一年,一个月,或者三年。根据我得到的,我有一个不同的控制流程。

到目前为止,我成功地将各种字符串解析为DateTime;这不是我的问题。

我的问题是,我想知道实际解析了什么(即,我得到的是一个月还是一年,或者两者兼而有之)。

未初始化的DateTime默认为01/01/0001,我不能将所有内容都设置为无效日期,例如99/99/9999,然后查看填充了什么。

我想也许我需要做regex,但DateTime类为多种区域性提供了解析,这在本项目中非常重要。

我试过搜索这个,但也许我没有使用正确的术语,因为肯定有其他人以前也有过这个问题。

更新:以下是我所拥有的一些示例代码:

string strIn = Console.ReadLine();
DateTimeStyles enStyles = DateTimeStyles.AllowInnerWhite | DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite | DateTimeStyles.AssumeLocal;
bFound = DateTime.TryParse(strIn, CultureInfo.CreateSpecificCulture("en-US"), enStyles, out cDT);

现在,如果某个被成功解析,bFind将为true。然而,我需要知道日期的哪些部分已成功解析

DateTime.TryParse-实际解析的内容

我不理解你的意思,但你在为你的日期时间寻找指定的格式吗?

string dateAndTimeFormat = "yyyy.MM.dd HH:mm:ss:fff"; // example of format
string dateAndTime = yourdatetimevalue;
DateTime toDateTime = DateTime.ParseExact(dateTime, dateTimeFormat, System.Globalization.CultureInfo.InvariantCulture)

格式的使用方式:http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.71).aspx

编辑1

锥虫返回真或假。如果失败,则为False。可能有用吗?否则,如果你能做到的话,你可以在锥虫之前设置文化。

DateTime.TryParse(dateString, culture, styles, out dateResult)

请查看以下示例:http://msdn.microsoft.com/en-us/library/9h21f14e.aspx

备注下:

"如果可能,此方法尝试忽略无法识别的数据,并用当前日期填充缺少的月、日和年信息。如果s只包含日期而不包含时间,则此方法假定时间为午夜12:00。如果s包含带有两位数年份的日期组件,则会根据calendar.TwoDigitYearMax p的值将其转换为当前区域性当前日历中的年份。"属性。s中的任何前导、内部或尾部空白字符都将被忽略。日期和时间可以用一对前导和尾随的NUMBER SIGN字符('#',U+0023)括起来,并且可以用一个或多个NULL字符(U+0000)尾随。"

希望这些能有所帮助。

DateTime.TryParse()仅在成功时返回值。因此,对于下面的代码示例,变量dt在声明时被初始化为01/01/0001 00:00:00。当TryParse尝试从字符串(MM/DD/YYYY格式)中提取日期时,如果失败,则dt变量的值为01/01/0001 00:00:00。否则,dt将包含实际提取的日期时间值(如2所示)。

1)

DateTime dt;
DateTime.TryParse("23/15/2013", out dt);
// dt contains "01/01/0001 00:00:00"`

2)

`DateTime dt;
DateTime.TryParse("23/12/2013 6:25", out dt);
// dt contains "23/12/2013 06:25:00"`

没有必要检查实际解析了什么。如果日期时间值有效,将对其进行解析,否则将返回默认日期时间值。