C# DateTime.TryParse-实际解析的是什么?

C# DateTime.TryParse-实际解析的是什么?,c#,datetime,localization,tryparse,C#,Datetime,Localization,Tryparse,我在C#中使用了DateTime.TryParse(),有点困难 本质上,给定一个字符串,我需要提取当前显示区域性中的年和/或月和日。有时我只有一年,或者一个月,或者三年。根据我得到的,我有一个不同的控制流 到目前为止,我成功地将各种字符串解析为DateTime;那不是我的问题 我的问题是,我希望知道实际解析的是什么(例如,我得到了一个月还是一年,或者两者都得到了) 未初始化的DateTime默认为01/01/0001,我不能将所有内容都设置为无效日期,例如99/99/9999,然后查看填写的内

我在C#中使用了
DateTime.TryParse()
,有点困难

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

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

我的问题是,我希望知道实际解析的是什么(例如,我得到了一个月还是一年,或者两者都得到了)

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

我在想也许我需要使用正则表达式,但是
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)
如何使用格式:

编辑1

tryparse返回true或false。如果失败,则为False。那可能有用吗? 否则,如果可以的话,您可以在tryparse之前设置培养基

DateTime.TryParse(日期字符串、区域性、样式、out-dateResult)

检查此处的示例:

备注如下:

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


希望这能有所帮助。

我不明白你的意思,但你是在为约会时间寻找一种特定的格式吗

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)
如何使用格式:

编辑1

tryparse返回true或false。如果失败则返回false。这可能有用吗? 否则,如果可以的话,您可以在tryparse之前设置培养基

DateTime.TryParse(日期字符串、区域性、样式、out-dateResult)

检查此处的示例:

备注如下:

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


希望这能有所帮助。

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

(一)

(二)

不需要检查实际解析的内容。
如果Datetime值有效,将对其进行分析,否则将返回默认的Datetime值。

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

(一)

(二)

不需要检查实际解析的内容。
如果Datetime值有效,则将对其进行分析,否则将返回默认的Datetime值。

您能提供更清晰的信息吗?是否要检测无效日期?实际上,从这个问题来看,您的问题并不清楚。您希望输入什么样的数据…提供一些示例。但通常,TryParse方法只是试图确定ermine字符串的格式是否可以转换为日期。您是否总是得到4位数的年份?如果不是,那么您如何区分1912年的“12”年与12月(12月)之间的差异?您所说的“解析的内容”是什么意思?它要么完全解析,要么不解析。解析的示例是什么?”“一个月”或“一年”?而且,
DateTime
基本上只是一个数字。它实际上并没有将月份部分或年份部分保存在单独的字段中。好吧,也许我的措辞有些混乱。我想问“你得到一年了吗?”或“你是否因为没有提供月份而默认了月份?”?“好吧,我不认为里面有什么东西。所以你需要自己做检查。例如,如果年份不是0001或当前年份,则可能已提供。如果inputString.Contains(“0001”或curr
`DateTime dt;
DateTime.TryParse("23/12/2013 6:25", out dt);
// dt contains "23/12/2013 06:25:00"`