我正在尝试将字符串转换为日期时间。但它给我带来了异常的便利。 请帮助。
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);
我得到同样的例外。
答案 0 :(得分:2)
您的字符串格式为“dd-MM-yyyy”,但Convert.ToDateTime()
默认格式为“MM-dd-yyyy”。所以选项是:
使用以下方法强制转换适应:
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);