我想计算vb6的时差.我是在vb.net上完成的.但我不知道如何在vb6中进行转换.因为日期时间类型在vb6中不可用.
我在下面粘贴了我的vb.net代码.如何在vb6中做同样的事情?
Public Sub timecal()
Dim dFrom As DateTime
Dim dTo As DateTime
Dim tempstarttime As DateTime
Dim idletime As String = "00:05:00"
Dim Needtosub As String = "00:01:00"
Dim timeDiff As String
If DateTime.TryParse(start_time, dFrom) AndAlso DateTime.TryParse(end_time, dTo) Then
Dim TS As TimeSpan = dTo - dFrom
Dim hour As Integer = TS.Hours
Dim mins As Integer = TS.Minutes
Dim secs As Integer = TS.Seconds
timeDiff = ((hour.ToString("00") + ":") + mins.ToString("00") + ":") + secs.ToString("00")
sscheck1 = False
If timeDiff >= idletime Then
tempstarttime = System.DateTime.Parse(end_time)
tempstarttime = tempstarttime.AddMinutes(-1)
start_time = Strings.Format(tempstarttime, "yyyy-MM-dd HH:mm:ss")
sscheck1 = True
End If
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以Date使用DateDiff函数计算两个值之间的时间差(包括时间)
分钟差异:
Dim lMinutes as Long
lMinutes = DateDiff("n", dFrom, dTo)
Run Code Online (Sandbox Code Playgroud)
以秒为单位的差异:
Dim lSeconds as Long
lSeconds = DateDiff("s", dFrom, dTo)
Run Code Online (Sandbox Code Playgroud)
对于小时差异:
Dim lHours as Long
lHours = DateDiff("h", dFrom, dTo)
Run Code Online (Sandbox Code Playgroud)
为了让你的字符串时间差异以小时:分钟:秒为单位,我会这样做:
Dim lSeconds as Long, lMinutes as Long
lSeconds = DateDiff("s", dFrom, dTo)
lMinutes = Fix(lSeconds / 60) '// Gets the whole number (not rounded)
lSeconds = ((lSeconds / 60) - lMinutes) * 60 '// get the remaining seconds
sTimeDiff = "00:" & Format$(lMinutes, "00") & ":" & Format$(lSeconds, "00")
Run Code Online (Sandbox Code Playgroud)
注意:如果lMinutes大于60,那么在拉动分钟和秒数之前,您需要进行类似的数学计算以拉出小时部分.根据您的示例,此代码假定您的时间跨度不到一小时.