Convert.ToDateTime(D)与(DateTime)相比D
如果我有一个值D并且希望确保它是类型的日期时间,那么以下是否有区别?Convert.ToDateTime(D)与(DateTime)相比D
DateTime dtm = Convert.ToDateTime(D)
DateTime dtm = (DateTime)D
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();
Convert.ToDateTime
有几个重载,将其他类型转换为DateTime
。它应该用于将不是DateTime的实例转换为DateTime实例。您也可以使用DateTime.Parse
和DateTime.TryParse
(如果您试图解析字符串表示形式)。
(DateTime)D
尝试直接将实例投射到DateTime
。如果实例在调用之前还不是DateTime
,则会抛出异常。
+1听起来像是因为'dr [i - 1]'已经是数据表中的日期时间了,我会尽可能使用快速投射 – whytheq 2013-03-25 20:26:40
通过使用“转换”类,您实际上可以在不同类型之间进行转换。例如。您可以将字符串转换为DateTime。 铸造仅适用于相同类型。所以你不能将一个字符串转换成一个Int32,因为这会引发一个转换异常。
关于你的例子: 如果D的内容始终是DateTime类型,那么你应该更喜欢使用它来投射它,因为演员阵容非常快。 如果你不知道D中的类型是什么(可能是因为它是Object类型的),你可能想要转换它,因为这比纯粹的转换更优雅,因为这种方法允许你通过String设置DateTime日期字符串)或Int32(滴答)。
+1感谢此信息Frank – whytheq 2013-03-25 20:21:58
D是什么类型? – Oded 2013-03-25 14:44:57
@提供了一个很好的问题 - 它是一个DataTable中的单元格 - 在SQL服务器中,提取D的字段是DateTime;我将添加这个(还有一点)到OP – whytheq 2013-03-25 15:10:17
@Oded添加了对问题上下文的小解释 – whytheq 2013-03-25 15:17:12