-1

我正在尝试将字符串转换为日期时间。但这给了我一个例外。请帮忙。

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

我收到异常,因为“字符串未被识别为有效的日期时间。

现在我的字符串为“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

4 回答 4

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);

于 2013-07-16T07:48:43.777 回答
1

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

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

自定义日期和时间格式字符串

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

更新

hh当您提供 am/pm 指示符时,您必须使用 lower来表示:

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

HH表示 24h 格式,对于 AM/PM 指示符完全没有意义。

于 2013-07-16T07:38:30.983 回答
0

尝试使用 ParseExact:

DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", null);
于 2013-07-16T07:38:53.073 回答
0

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

于 2013-07-16T07:47:36.233 回答