ASP - 分钟时间

问题描述:

我正在计算小时数。ASP - 分钟时间

<% hrs =(DateDiff("N", cdate(m1), CDate(m2) ))/60 %> . 

它没有给出预期的输出。

我需要这个小时生成工资 所以时间应该小时喜欢这个7.25,7.50,7.75和......不是7.23或7.28,7.30 一段时间它给人7.833333333333

请帮

+0

您的规格非常薄弱。你的意思是你只想要以15分钟的增量生成hr值?如果是的话,那么舍入政策需要什么?例如,你想轮到一小时内最近的整个四季。 – AnthonyWJones

我的猜测是你真正想要的是这样的: -

Dim hrs 
hrs = Int(DateDiff("N", CDate(m1), CDate(m2))/15)/4 

这是基础,你只需要支付薪水以一小时一个小时的增量衡量工作时间。

+0

+1。谢谢你的好技巧。 –

+0

谢谢,几乎我所需要的。 。 。 – Dev

使用

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 
========================================================= 
+0

嗯.... y! – AnthonyWJones

安东尼的解决方案真棒,但它圆了。如果你想在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的值更改为任何东西。