问题
我正在尝试以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
答案 0 :(得分:3)
来自documentation of DateTime.ParseExact
method;
将指定的日期和时间字符串表示形式转换为它 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
。这是怎样的implemented;
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
的原因。
答案 1 :(得分:1)
这样做。您已设置无效格式以将字符串解析为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");
答案 2 :(得分:0)
使用此:
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");