将字符串转换为日期时间时,字符串未被识别为有效的日期时间

本文关键字:时间 日期 字符串 识别 有效 转换 | 更新日期: 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");