如何将"10/19/2017 12:00:00 AM"
之类的字符串转换为DateTime?我使用Convert.ToDateTime()
,但它给出了一个错误;
字符串未被识别为有效的DateTime。
如何解决?
答案 0 :(得分:2)
您应该使用 ParseExact
var result = DateTime.ParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);
答案 1 :(得分:2)
Convert.ToDateTime
没有指定要解析的格式,您需要使用DateTime.ParseExact
或DateTime.TryParseExact
:
// DateTime.ParseExact
DateTime date = DateTime.ParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture);
// DateTime.TryParseExact
DateTime.TryParseExact("10/19/2017 12:00:00 PM", "MM/dd/yyyy HH:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
答案 2 :(得分:2)
String MyString= "10/19/2017 12:00:00 AM";
DateTime MyDateTime = new DateTime();
MyDateTime = DateTime.ParseExact(MyString, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
格式如下
d - 没有前导零的月份的数字日。
dd - 月份的数字日,前导零。
ddd - 星期几的缩写名称。
dddd - 星期几的全名。
f,ff,fff,ffff,fffff,ffffff,fffffff - 一秒钟的分数。 Fs越多,精度越高。
h - 12小时制,没有前导零。
hh - 12小时时钟,前导零。
H - 24小时制,没有前导零。
HH - 24小时时钟,前导零。
m - 没有前导零的分钟。 mm - 带前导零的分钟。
M - 没有前导零的数字月份。
MM - 具有前导零的数字月份。
MMM - 月份的缩写名称。
s - 没有前导零的秒数。 ss - 领先零的秒数。
t - 上午/下午,但只有第一个字母。 tt - 上午/下午(上午/下午)
y - 年外世纪和领先零。
yy - 世纪之年,领先零。
yyyy - 世纪之年。zz - 使用+/-设置时区关闭。