将字符串转换为datetime时,字符串未被识别为有效的DateTime错误

时间:2014-01-09 10:52:17

标签: c# datetime

我正在尝试将字符串转换为c#中的datetime。我试过下面的

DateTime.ParseExact("01.01.2014 11:48:25","yyyy-MM-dd hh:mm:ss",System.Globalization.CultureInfo.CurrentCulture)

但我收到错误String was not recognized as a valid DateTime

我尝试Convert.ToDateTime,但它会缩短小时,分钟和秒钟。

如何摆脱这个问题?

UPDATE1 我也尝试使用像

DateTime.ParseExact("01.01.2014 11:48:25","dd-MM-yyyy hh:mm:ss",System.Globalization.CultureInfo.CurrentCulture)

但我仍然得到同样的错误

UPDATE2 使用代码后

DateTime.ParseExact("01.01.2014 11:48:25","dd.MM.yyyy HH:mm:ss",System.Globalization.CultureInfo.CurrentCulture)

工作正常。但是,如果将日期作为"01/01/2014 11:48:25"传递,那么这种格式将不起作用。

2 个答案:

答案 0 :(得分:1)

请改为尝试:

DateTime.ParseExact("01.01.2014 11:48:25", "dd.MM.yyyy hh:mm:ss", System.Globalization.CultureInfo.CurrentCulture);

答案 1 :(得分:1)

DateTime对象提供了ParseExact()方法的三次重载。您可以尝试使用以下重载来使用指定的格式数组将指定的string转换为其DateTime等效项:

DateTime.ParseExact(string s, string[] formats, IFormatProvider provider, DateTimeStyles style)

示例:

...
// define the possible date formats
var formats = new[] {
  "dd.MM.yyyy HH:mm:ss",
  "dd-MM-yyyy HH:mm:ss",
  "dd/MM/yyyy HH:mm:ss"
};

DateTime.ParseExact("01.01.2014 11:48:25", formats, System.Globalization.CultureInfo.CurrentCulture, DateTimeStyles.None);
...