将字符串转换为15-07-2013的Datetime Exception

时间:2013-07-16 07:34:34

标签: string c#-4.0 datetime date-conversion

我正在尝试将字符串转换为日期时间。但它给我带来了异常的便利。 请帮助。

DateTime dt = Convert.ToDateTime("15-07-2013");

我遇到异常,因为“字符串未被识别为有效的DateTime。

现在我的字符串为“15-07-2013 07:12:00 PM” 当我使用下面提到的代码时,我将获得例外。

 DateTime dtCurrentFile = DateTime.ParseExact("15-07-2013 07:12:00 PM", "dd-MM-yyyy HH:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None);

我得到同样的例外。

4 个答案:

答案 0 :(得分:2)

您的字符串格式为“dd-MM-yyyy”,但Convert.ToDateTime()默认格式为“MM-dd-yyyy”。所以选项是:

  1. 将字符串格式更改为“07/15/2013”​​
  2. 使用以下方法强制转换适应:

    DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy",CultureInfo.InvariantCulture, DateTimeStyles.None);

答案 1 :(得分:1)

您始终可以使用DateTime.ParseExact强制格式,并使用InvariantCulture避免文化问题:

DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

Custom Date and Time Format Strings

但是,您的代码适用于文化"de-DE"

<强>更新

当您提供am / pm指示符时,您必须使用较低的hh小时:

DateTime.ParseExact("15-07-2013 07:12:00 PM", "dd-MM-yyyy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None)

HH表示24小时格式,对AM / PM指示符毫无意义。

答案 2 :(得分:0)

尝试使用ParseExact:

DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", null);

答案 3 :(得分:0)

您遇到异常的原因是默认情况下C#支持此格式的日期时间
“MM / dd / yyyy”在您尝试传递日期时间的地方是这种格式“dd-MM-yyyy”
虽然您可以使用您的格式转换,但为此您需要告诉编译器您的日期是以哪种格式,因此您可以使用
DateTime myDate = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", System.Globalization.CultureInfo.InvariantCulture);