1.常见错误:
(1)错误类型一:sqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/999911:59:59 PM之间。
A原因:
我们在取DateTime.MinValue的值,并插入到数据库的时候,DateTime.MinValue值范围和数据库DateTime类型数据范围不一致造成的。数据库中,DateTime类型字段,最小值1/1/175312:00:00,而.NET Framework中,DateTime类型,最小值为1/1/00010:00:00,显然,超出了sql的值的最小范围,导致数据溢出的错误。
B解决方案:转换时间类型格式。如:
Dim currentDate As Date = Now()
enWork.LogingDate =Convert.ToDateTime(Format(currentDate,"yyyy/MM/dd"))
enWork.LoginTime =Convert.ToDateTime(Format(currentDate,"HH:mm:ss"))
A 原因:
使用到存储过程,存储过程中时间类型是varchar,而vb.net实体类中的时间类型是Datetime,类型不匹配,未能插入成功。
B 解决方案:将存储过程中的时间类型改为time(7)
(3)错误类型三:从类型“TimeSpan”到类型“Date”的转换无效。
A原因:
从数据库中获取的时间是timeSpan类型的,需要转换成字符串类型的方可赋值给实体
B解决方案:
enOnLine.OnTime =Convert.ToString(dtQuery.Rows(0).Item("onTime"))
2.常见方法
(1)方法一:计算时间差--使用DateDiff函数:返回一个Long值,用于指定两个Date值之间的时间间隔数
例如:
Dim Time1 As Date Dim Time2 As Date Dim Diff As String Diff = DateDiff(DateInterval.Minute,Time1,Time2)
其中:DateInterval.Minute:设置时间间隔格式为分钟。(用户可根据自己具体要求设定)
(2)方法二:时间取整--使用Format函数:返回已按照格式String表达式中包含的指令进行了格式化了的字符串
Dim Int as String
Int=Format(Diff,"0.0")
其中:这里用到的不是四舍五入,而是通过对字符串进行按照既定要求格式化得到的。
(3)方法三:取出时间中的小时值
Dim Time asDate Dim Hour asInteger Hour=System.DateTime.Parse(CStr( Time))
方法还有很多,需要我们在项目中不断的总结经验,慢慢积累,越来越好!