将字符串转换为日期时间时,字符串未被识别为有效的日期时间
本文关键字:时间 日期 字符串 识别 有效 转换 | 更新日期: 2023-09-27 18:18:43
>问题
我正在尝试将String
转换为DateTime
格式,并再次将DateTime
转换为String
案例#1
string time = "20120718 00:56:03";
DateTime theTime =DateTime.ParseExact(time,"MM-dd-yyyy HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None);
string convertedTime = theTime.ToString("MM-dd-yyyy HH:mm:ss");
案例 # 2
string time = "20120718 00:56:03";
string CallDate_DBFormat = Convert.ToDateTime(time).ToString("MM-dd-yyyy HH:mm:ss");
DateTime CallTime = Convert.ToDateTime(CallDate_DBFormat);
string convertedTime = CallTime.ToString("MM-dd-yyyy HH:mm:ss");
在这两种情况下,我都得到异常
字符串未被识别为有效的日期时间
来自DateTime.ParseExact
方法的文档;
将日期和时间的指定字符串表示形式转换为其 使用指定格式和特定于区域性的 DateTime 等效项 格式信息。字符串表示形式的格式必须匹配 完全指定的格式。
在您的情况下 #1,它们不是。 请改用yyyyMMdd HH:mm:ss
格式。
string time = "20120718 00:56:03";
DateTime theTime = DateTime.ParseExact(time,"yyyyMMdd HH:mm:ss",
CultureInfo.InvariantCulture,
DateTimeStyles.None);
string convertedTime = theTime.ToString("MM-dd-yyyy HH:mm:ss");
对于案例#2,我们需要知道您的CurrentCulture
财产。为什么?
因为此方法使用DateTime.Parse
方法与CurrentCulture
.这是它是如何实现的;
public static DateTime ToDateTime(String value)
{
if (value == null)
return new DateTime(0);
return DateTime.Parse(value, CultureInfo.CurrentCulture);
}
可能yyyyMMdd HH:mm:ss
格式不是您CurrentCulture
的标准日期和时间格式,这就是此方法抛出FormatException
的原因。
像这样做。您已设置无效的格式以将字符串解析为DateTime
查看您的DateTime
字符串格式。
string time = "20120718 00:56:03";
DateTime theTime =DateTime.ParseExact(time,"yyyyMMdd HH:mm:ss",CultureInfo.InvariantCulture,DateTimeStyles.None);
string convertedTime = theTime.ToString("MM-dd-yyyy HH:mm:ss");
使用这个:
string time = "20120718 00:56:03";
DateTime theTime = DateTime.ParseExact(time, "yyyyMMdd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);
string convertedTime = theTime.ToString("yyyy-dd-MM HH:mm:ss");