【发布时间】:2020-11-27 04:47:08
【问题描述】:
我正在尝试将字符串转换为日期时间。
try{
dateValue = Convert.ToDateTime(DateTime.Parse(dateData).ToString("dd/MM/yyyy"));
}catch (Exception err)
{
TraceLog.WriteException(err);
dateValue = DateTime.MinValue;
}
当日期时间为“2019 年 11 月 1 日”时,它不会引发任何错误。你可以see here
如果它在“2019 年 11 月 30 日”,则抛出字符串未被识别。你可以see here
我想使用 ToString 的原因是因为 DateTime.Parse 将以这种“MM/dd/yyyy”格式返回值。例如 2019 年 11 月 1 日,在网络中它将显示为 2019 年 1 月 11 日,这是我不想要的。我已经在各地找到了几天的解决方案,但仍然无法正常工作。
【问题讨论】:
-
使用 ParseExact 而不是 Parse,这样您可以更好地控制日期的解析方式。
-
问问你自己 - 当你将一个字符串解析为 Date 时,代码如何知道日期的格式?如果您的字符串是 dd/MMM/yyyy 格式,您需要告诉代码使用这种格式解析日期。这就是为什么 11 月 1 日对你来说变成了 1 月 11 日。可以看看 ParseExact
-
您正在获取一个字符串 (
dateData),将其解析为 DateTime,将其转换回特定格式的字符串,然后调用Convert.ToDateTime将其转换回 DateTime。你绕着街区转了一圈太多次了。使用DateTime.TryParse或DateTime.TryParseExact。绝对跳过 ToString 调用和 Convert 调用 -
@PrateekShrivastava 我刚刚做到了。它仍然返回“字符串未被识别”。格式为“dd/MMM/yyyy”。对于具有单个数字“2019 年 11 月 1 日”的那一天,它可以工作,但不能使用“2019 年 11 月 10 日”
-
请显示您的 ParseExact 代码。