将String转换为DateTime Asp.Net

时间:2017-10-19 04:04:19

标签: c# datetime

如何将"10/19/2017 12:00:00 AM"之类的字符串转换为DateTime?我使用Convert.ToDateTime(),但它给出了一个错误;

  

字符串未被识别为有效的DateTime。

如何解决?

3 个答案:

答案 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.ParseExactDateTime.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 - 月份的缩写名称。

MMMM - 全月名称。

s - 没有前导零的秒数。 ss - 领先零的秒数。

t - 上午/下午,但只有第一个字母。 tt - 上午/下午(上午/下午)

y - 年外世纪和领先零。

yy - 世纪之年,领先零。

yyyy - 世纪之年。

zz - 使用+/-设置时区关闭。