我尝试了以下代码:
DateTime dateTime = DateTime.ParseExact("01/02/2013", //string date
"01/02/2013", // string format
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
我知道格式不正确.但为什么不是抛出异常而是返回当前日期dateTime = {24/09/2014 12:00:00 AM}.
我知道我的约会的有效格式应该是MM/dd/yyyy,但为什么它没有抛出异常.我也尝试过DateTime.TryParseExact,它返回当前日期而不是default(DateTime).这实际上是在阅读这个问题.
我的问题是这个解析是如何工作的?
格式字符串中没有日/月占位符.因此它按字面匹配每个字符(成功)并返回日期的每个组件的默认(今天)值.
事实上,如果没有完全匹配,它将抛出错误(注意"11/..."和"01/..."之间不匹配)
DateTime.ParseExact("11/02/2013",
"01/02/2013", // string format
CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
行为非常类似于一些合理的模式,如"MM/yyyy" - 期望月份,而不是完全匹配/角色,而不是年份.
默认值是当前日期的午夜 DateTime.ParseExact:
如果format定义没有日期元素的时间并且解析操作成功,则生成的DateTime值的日期为DateTime.Now.Date.
| 归档时间: |
|
| 查看次数: |
902 次 |
| 最近记录: |