Convert.ToDateTime(D)与(DateTime)D相比较

时间:2013-03-25 14:44:15

标签: c#

如果我的值 D 并且想要确保它是类型datetime,那么以下是否存在差异?

  1. DateTime dtm = Convert.ToDateTime(D)
  2. DateTime dtm = (DateTime)D
  3. 1是转换,而2是演员? (我假设在某些方面2是打火机操作?)
    我什么时候应该使用1而不是2?


    修改

    (问题的背景)

    D 来自DataTable中的单元格。我正在做的是找到任何日期的单元格(通过datatable.columnname),然后将ToOADate函数应用于结果,然后再将其移动到xl。因此,如果dr是我的DataRowView,那么我有以下任何一种选择:

    //Convert
    DateTime dtm;
    dtm = Convert.ToDateTime(dr[i - 1]);
    xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate();
    
    //Cast
    DateTime dtm;
    dtm = (DateTime)dr[i - 1];
    xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate();
    

2 个答案:

答案 0 :(得分:6)

Convert.ToDateTime有几个重载会将其他类型转换为DateTime。当您将不是DateTime的实例转换为DateTime实例时,应该使用它。您还可以使用DateTime.ParseDateTime.TryParse(如果您尝试解析字符串表示形式)。

(DateTime)D尝试将实例直接转换为DateTime。如果实例在调用之前不是DateTime,则会抛出异常。

答案 1 :(得分:1)

通过使用“转换”类,您实际上可以在不同类型之间进行转换。例如。您可以将String转换为DateTime。 转换仅适用于相同类型。因此,您无法将String强制转换为Int32,因为这会引发强制转换异常。

关于你的例子: 如果D的内容始终是DateTime类型,那么您应该更喜欢使用它,因为强制转换非常快。 如果您不知道D内部的类型(可能因为它是Object类型),您可能希望转换它,因为这比仅仅普通转换更优雅,因为此方法允许您也按字符串设置DateTime(日期String)或Int32(ticks)。