C#中的System.Format异常

时间:2018-09-20 10:35:35

标签: c# asp.net ado.net

objDR [“ sidate”]。ToString()的日期格式为“ 01-17-78”,其中objDR是数据行。 当我执行以下操作时:

    Convert.ToDateTime(objDR["sidate"].ToString())

我收到一个System.Format异常。 可能是什么原因造成的?

编辑: 现在没有异常。请参阅标记答案。只是一个问题:中间使用的“ MM-dd-yy”是用于将日期从一种格式转换为另一种格式,还是用于其他目的?因为我将其更改为“ M-d-yy”,但格式没有更改。

3 个答案:

答案 0 :(得分:4)

您必须提供日期格式。
试试这个
DateTime dt = DateTime.ParseExact("01-17-78", "MM-dd-yy", CultureInfo.InvariantCulture);

答案 1 :(得分:1)

Convert.ToDateTime()方法考虑了您当前的区域性,为了使用该方法,您必须确保要传递给该方法的DateTime的格式与当前区域性的格式相同。

否则,您可以执行以下操作:

var date = DateTime.Parse(objDR["sidate"].ToString(),CultureInfo.InvariantCulture);

另一种解决方案是使用DateTime.ParseExact()方法:

DateTime dt = DateTime.ParseExact(objDR["sidate"].ToString(), "MM-dd-yy", CultureInfo.InvariantCulture);
在MSDN中从

LinkDateTime结构。
在MSDN中从LinkDateTime.Parse(String, IFormatProvider)方法重载。
Link到MSDN中的Convert.ToDateTime()方法。
Link到MSDN上的DateTime.ParseExact()方法。

答案 2 :(得分:0)

问题是您当前的文化。 Convert.ToDateTime使用当前区域性来确定remakrs的转换格式see

但是一种解决方案是使用

DateTime.Parse(objDR["sidate"].ToString(), CultureInfo.InvariantCulture)
,这样就可以赋予程序员这种文化。