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。然而,我需要知道日期的哪些部分已成功解析
我不理解你的意思,但你在为你的日期时间寻找指定的格式吗?
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"`
没有必要检查实际解析了什么。如果日期时间值有效,将对其进行解析,否则将返回默认日期时间值。