我正在计算分钟数。
<% hrs =(DateDiff("N", cdate(m1), CDate(m2) ))/60 %> .
它没有给出预期的输出。
我需要这个小时来产生薪水 所以时间小时应该像7.25,7.50,7.75和...而不是7.23或7.28,7.30 一段时间它给出7.833333333333
请帮忙
答案 0 :(得分:2)
我的猜测是你真正想要的是这个: -
Dim hrs
hrs = Int(DateDiff("N", CDate(m1), CDate(m2)) / 15) / 4
这是基于你只按季度一小时的增量计算工资时间。
答案 1 :(得分:1)
安东尼的解决方案非常棒,但它已经完成了。如果你想要在7分钟内完成最近的15分钟,请使用以下内容:
Const csRoundUp = 7
Dim Minutes
Dim hrs
Minutes = Int(DateDiff("N", CDate(Date1), CDate(Date2)) Mod 60)
if Minutes > csRoundUp then
hrs = (Int(DateDiff("N", CDate(Date1), CDate(Date2)) / 15)+1) / 4
else
hrs = Int(DateDiff("N", CDate(Date1), CDate(Date2)) / 15) / 4
end if
当然,您可以将csRoundUp的值更改为您认为合适的任何内容。
答案 2 :(得分:0)
使用
100Minutes = 100 * 60Minutes \ 60
计算“正常”分钟的厘米数。演示:
Dim dtStart : dtStart = #11/5/2011 08:00:00#
Dim aTests : aTests = Array( _
0, 1, 6, 15, 30, 45, 59, 60, 90 _
)
Dim nAddMins
For Each nAddMins In aTests
Dim dtStop : dtStop = DateAdd( "n", 7 * 60 + nAddMins, dtStart )
Dim dtDiff : dtDiff = CDate( dtStop - dtStart )
Dim nHours : nHours = Hour( dtDiff )
Dim nMins : nMins = Minute( dtDiff )
If nAddMins Mod 60 <> nMins Then
Err.Raise vbObjectError + 4711, "CentiMinute", nAddMins & " <> " & nMins
End If
Dim nCMins : nCMins = 100 * nMins \ 60
WScript.Echo dtStart, dtStop _
, Right( 1000 + nAddMins, 3 ) _
, Right( 100 + nHours , 2 ) & ":" & Right( 100 + nMins , 2 ) _
, Right( 100 + nHours , 2 ) & "." & Right( 100 + nCMins , 2 )
Next
输出(德语区域设置):
=========================================================
05.11.2011 08:00:00 05.11.2011 15:00:00 000 07:00 07.00
05.11.2011 08:00:00 05.11.2011 15:01:00 001 07:01 07.01
05.11.2011 08:00:00 05.11.2011 15:06:00 006 07:06 07.10
05.11.2011 08:00:00 05.11.2011 15:15:00 015 07:15 07.25
05.11.2011 08:00:00 05.11.2011 15:30:00 030 07:30 07.50
05.11.2011 08:00:00 05.11.2011 15:45:00 045 07:45 07.75
05.11.2011 08:00:00 05.11.2011 15:59:00 059 07:59 07.98
05.11.2011 08:00:00 05.11.2011 16:00:00 060 08:00 08.00
05.11.2011 08:00:00 05.11.2011 16:30:00 090 08:30 08.50
=========================================================