将todatetime (D)转换为(DateTime)D
本文关键字:DateTime 转换 todatetime | 更新日期: 2023-09-27 18:05:37
如果我有一个值D并希望确保它是datetime类型,那么以下之间是否存在差异?
-
DateTime dtm = Convert.ToDateTime(D)
-
DateTime dtm = (DateTime)D
1是转换,而2是强制转换?(我认为在某些方面2是一个轻操作?)
什么时候我应该用1而不是2?
编辑
(上下文)
D来自DataTable
中的cell。我正在做的是找到日期的任何单元格(通过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
,则会抛出异常。
通过使用"Convert"类,您实际上可以在不同类型之间进行转换。例如,你可以将字符串转换为日期时间。强制转换只适用于相同的类型。因此,不能将String类型强制转换为Int32类型,因为这会引发强制转换异常。
关于你的例子:如果D的内容总是DateTime类型,那么您应该选择强制转换,因为强制转换非常快。如果你不知道D中的类型是什么(可能是因为它是Object类型),你可能希望转换它,因为这比普通的类型转换更优雅,因为这个方法允许你通过String (Date String)或Int32 (ticks)设置DateTime。