Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误消息为";字符串未被识别为有效的日期时间。”;_C#_Asp.net_String_Datetime - Fatal编程技术网

C# 错误消息为";字符串未被识别为有效的日期时间。”;

C# 错误消息为";字符串未被识别为有效的日期时间。”;,c#,asp.net,string,datetime,C#,Asp.net,String,Datetime,我的代码: DateTime? birthDate = DateTime.Parse(filterDictionary.ContainsKey("DOB") ? filterDictionary["DOB"] : string.Empty); 我收到的错误消息是“字符串未被识别为有效的日期时间”。如何解决此问题。谢谢。问题是(至少有一个)无法将空字符串解析为日期时间 将代码行更改为此,以便仅在找到密钥时移动解析,并在没有密钥时返回null而不是解析: DateTime? birthDate =

我的代码:

DateTime? birthDate = DateTime.Parse(filterDictionary.ContainsKey("DOB") ? filterDictionary["DOB"] : string.Empty);
我收到的错误消息是“字符串未被识别为有效的日期时间”。如何解决此问题。谢谢。

问题是(至少有一个)无法将空字符串解析为
日期时间

将代码行更改为此,以便仅在找到密钥时移动解析,并在没有密钥时返回null而不是解析:

DateTime? birthDate = filterDictionary.ContainsKey("DOB") ? DateTime.Parse( filterDictionary["DOB"]) : (DateTime?) null;
另一个问题可能是您的字典DOB值实际上无法转换为
日期时间。如果上述代码不起作用,请编辑您的问题,并在出现此错误时在
filterDictionary[“DOB”]
中发布值。

问题(至少其中一个)是无法将空字符串解析为
DateTime

将代码行更改为此,以便仅在找到密钥时移动解析,并在没有密钥时返回null而不是解析:

DateTime? birthDate = filterDictionary.ContainsKey("DOB") ? DateTime.Parse( filterDictionary["DOB"]) : (DateTime?) null;

另一个问题可能是您的字典DOB值实际上无法转换为
日期时间。如果上述代码不起作用,请编辑您的问题,并在出现此错误时在
filterDictionary[“DOB”]
中发布该值。

好的
DateTime。当您使用空字符串呈现时,解析总是会失败

现在还不清楚您看到这段时间是字典中有数据但无效,还是没有数据并且正在解析
string.Empty
。还要注意,
DateTime.Parse
返回的是
DateTime
,而不是
DateTime?
。如果您希望值为
null
,如果条目不在字典中,我实际会使用:

DateTime? birthDate = null;
string dobText;
if (filterDictionary.TryGetValue("DOB", out dobText))
{
    birthDate = DateTime.Parse(dobText);
}
或许:

string dobText;
DateTime? birthDay = filterDictionary.TryGetValue("DOB", out dobText)
    ? DateTime.Parse(dobText) : (DateTime?) null;
请注意,这里需要将第二个或第三个操作数中的至少一个强制转换为
null
,以便编译器可以计算出条件表达式的类型

您还应该考虑是否对“代码> > DATETIME.PARSE < /代码>的调用是适当的:

  • 如果您知道所需的特定格式,请调用
    DateTime.ParseExact
  • 如果这是用户输入,您可能应该使用
    TryParse
    TryParseExact
  • 如果不是用户输入,您可能应该指定
    CultureInfo.InvariantCulture
  • 如果它是GUI中的直接用户输入,有没有一种方法可以首先避免将其作为文本

好的
DateTime.Parse
总是会失败,如果您用空字符串表示它

现在还不清楚您看到这段时间是字典中有数据但无效,还是没有数据并且正在解析
string.Empty
。还要注意,
DateTime.Parse
返回的是
DateTime
,而不是
DateTime?
。如果您希望值为
null
,如果条目不在字典中,我实际会使用:

DateTime? birthDate = null;
string dobText;
if (filterDictionary.TryGetValue("DOB", out dobText))
{
    birthDate = DateTime.Parse(dobText);
}
或许:

string dobText;
DateTime? birthDay = filterDictionary.TryGetValue("DOB", out dobText)
    ? DateTime.Parse(dobText) : (DateTime?) null;
请注意,这里需要将第二个或第三个操作数中的至少一个强制转换为
null
,以便编译器可以计算出条件表达式的类型

您还应该考虑是否对“代码> > DATETIME.PARSE < /代码>的调用是适当的:

  • 如果您知道所需的特定格式,请调用
    DateTime.ParseExact
  • 如果这是用户输入,您可能应该使用
    TryParse
    TryParseExact
  • 如果不是用户输入,您可能应该指定
    CultureInfo.InvariantCulture
  • 如果它是GUI中的直接用户输入,有没有一种方法可以首先避免将其作为文本


无法确定条件表达式的类型,因为未显示“System.DateTime”和“msg”之间的隐式转换。谢谢。@SOUser:看到我的答案了吗?您需要将一个或另一个操作数强制转换为
DateTime?
谢谢Jon,我现在更新了我的答案以反映这一变化。@yvindKnobloch Brå然后,更新的答案按预期运行良好。非常感谢。无法确定条件表达式的类型,因为未显示“System.DateTime”和“msg”之间的隐式转换。谢谢。@SOUser:看到我的答案了吗?您需要将一个或另一个操作数强制转换为
DateTime?
谢谢Jon,我现在更新了我的答案以反映这一变化。@yvindKnobloch Brå然后,更新的答案按预期运行良好。非常感谢。TryGetValue未填充。它询问您是否缺少命名空间。我把“system.Data.Common”放在这里。问题也出现了。Thanks@SOUser:我假设
filterDictionary
是一本
字典
-不是吗?(和以往一样,利用部分信息很难。)非常感谢。我从oyvind那里得到了你更正后的最新答案。它工作得很好。谢谢。@SOUser:这是不是意味着你忽略了我文章中的其他几点?不要只是做第一件事情,立即为你使用的确切数据-停止并考虑更广泛的问题。当然。我肯定会尝试其他选择。我不会忽视。非常感谢。TryGetValue未填充。它询问您是否缺少命名空间。我把“system.Data.Common”放在这里。问题也出现了。Thanks@SOUser:我假设
filterDictionary
是一本
字典
-不是吗?(和以往一样,利用部分信息很难。)非常感谢。我从oyvind那里得到了你更正后的最新答案。它工作得很好。谢谢。@SOUser:这是不是意味着你忽略了我文章中的其他几点?不要只是做第一件事情,立即为你使用的确切数据-停止并考虑更广泛的问题。当然。我肯定会尝试其他选择。我不会忽视。非常感谢你。