开发者

Calculating wage by hours worked

开发者 https://www.devze.com 2023-01-10 06:28 出处:网络
Hey all, i am trying to figure out how to calculate the wage for an employee when they clock out. This is the code i am currently using:

Hey all, i am trying to figure out how to calculate the wage for an employee when they clock out. This is the code i am currently using:

 Dim theStartTime As Date
 Dim theEndTime As Date
 Dim totalTime As String

 theStartTime = "16:11:06"
 theEndTime = "18:22:01"
 totalTime = Format(CDbl((theEndTime - theStartTime) * 24), "#0.0")

So workable hours would be: 开发者_如何转开发2h 11m

Right now, with my calculation code above, i get 2.2. What would i need to add in order to get it to calculate the correct time of 2:11 instead of 2:20?

David


Note that 2.2 hours is not 2:20, it's 2:12.

Change

Format(CDbl((theEndTime - theStartTime) * 24), "#0.0")

to

Format(theEndTime - theStartTime, "h:mm")

You're getting the right value, just rounding it off when you print. theEndTime - theStartTime is a time span equal to the difference between the two times. As you discovered, multiplying it by 24 will give you the number of hours different. However, you then have to divide by 24 again to use date/time formatting.

Check out all the ways to format dates and time in VB6.


First, I highly suggest going to the .NET framework (with it's easy-to-use TimeSpan class) if possible.

But, dealing in VB6 you should be able to use the DATEDIFF function (and it's been many years since I've touched VB6 so the specific syntax might be a bit off

Dim iHours As Integer, iMins As Integer
iMins = DateDiff("n", theStartTime, theEndTime)
iHours = iMins / 60
iMins = iMins Mod 60


You should also try casting it to the Currency type which can represent all numeric values (within 4 digits to the left of decimal point and 15 digits to the right).

Format(CCur((theEndTime - theStartTime) * 24), "#0.00")
0

精彩评论

暂无评论...
验证码 换一张
取 消