vb.net 常见时间类型问题

前端之家收集整理的这篇文章主要介绍了vb.net 常见时间类型问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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"))


(2)错误类型二:插入数据库中的时间都是00:00:00

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))

方法还有很多,需要我们在项目中不断的总结经验,慢慢积累,越来越好!

猜你在找的VB相关文章