Solved

Date/time function

Posted on 1998-11-27
8
158 Views
Last Modified: 2010-04-30
Here is the problem: I got these values:   FromDate, ToDate, DayFrom, DayTo, EveningFrom, EveningTo, NightFrom, NightTo.

FromDate and ToDate are date/time values going over multiple days. Dayfrom, dayto, eveningFrom, eveningto, nightfrom, nightto are time values defining a period of the day( Day: 08:00 - 14:59, Evening: 15:00-20:59, Night: 21:00-07:59).

I need to calculate how many minutes day, evening and night the fromdate-todate contain.

Anyone know of a function like that?

Mr. Fixit
0
Comment
Question by:KJHDI12
8 Comments
 
LVL 14

Expert Comment

by:waty
ID: 1447080
You have to use the DateDiff function :

ex :  nMinutes = DateDiff("n", FromDate, ToDate)
Now, you can convert those minutes for your needs.



Here is the help :

Syntax

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

The DateDiff function syntax has these named arguments:

Part      Description
interval      Required. String expression that is the interval of time you use to calculate the difference between date1 and date2.
date1, date2      Required; Variant (Date). Two dates you want to use in the calculation.
firstdayofweek      Optional. A constant that specifies the first day of the week. If not specified, Sunday is assumed.
firstweekofyear      Optional. A constant that specifies the first week of the year. If not specified, the first week is assumed to be the week in which January 1 occurs.
Settings

The interval argument has these settings:

Setting      Description
yyyy      Year
q      Quarter
m      Month
y      Day of year
d      Day
w      Weekday
ww      Week
h      Hour
n      Minute
s      Second
The firstdayofweek argument has these settings:

Constant      Value      Description
 
vbUseSystem      0      Use the NLS API setting.
vbSunday      1      Sunday (default)
vbMonday      2      Monday
vbTuesday      3      Tuesday
vbWednesday      4      Wednesday
vbThursday      5      Thursday
vbFriday      6      Friday
vbSaturday      7      Saturday
The firstweekofyear argument has these settings:

Constant      Value      Description
 
vbUseSystem      0      Use the NLS API setting.
vbFirstJan1      1      Start with week in which January 1 occurs (default).
vbFirstFourDays      2      Start with the first week that has at least four days in the new year.
vbFirstFullWeek      3      Start with first full week of the year.
Remarks

You can use the DateDiff function to determine how many specified time intervals exist between two dates. For example, you might use DateDiff to calculate the number of days between two dates, or the number of weeks between today and the end of the year.
To calculate the number of days between date1 and date2, you can use either Day of year ("y") or Day ("d"). When interval is Weekday ("w"), DateDiff returns the number of weeks between the two dates. If date1 falls on a Monday, DateDiff counts the number of Mondays until date2. It counts date2 but not date1. If interval is Week ("ww"), however, the DateDiff function returns the number of calendar weeks between the two dates. It counts the number of Sundays between date1 and date2. DateDiff counts date2 if it falls on a Sunday; but it doesn't count date1, even if it does fall on a Sunday.

If date1 refers to a later point in time than date2, the DateDiff function returns a negative number.
The firstdayofweek argument affects calculations that use the "w" and "ww" interval symbols.
If date1 or date2 is a date literal, the specified year becomes a permanent part of that date. However, if date1 or date2 is enclosed in double quotation marks (" "), and you omit the year, the current year is inserted in your code each time the date1 or date2 expression is evaluated. This makes it possible to write code that can be used in different years.

When comparing December 31 to January 1 of the immediately succeeding year, DateDiff for Year ("yyyy") returns 1 even though only a day has elapsed.
0
 
LVL 2

Author Comment

by:KJHDI12
ID: 1447081

All this i know from before :>

The problem i am having is dividing the time into the 3 different timeperiods and the calculate the exact minutes in each period.

I am going to use the formula to calculate different salary in different periods of the day. Like he worked 3 days from 12.12.1998 12:00 to 14.12.1998 20:00 and you get 350 minutes at day, 333 at evening and 543 at night (These are example numbers only).

   Mr. Fixit

0
 
LVL 13

Expert Comment

by:Mirkwood
ID: 1447082
I think Waty's answer is good enough. The only thing that you need to do is divide the time in three parts.
1) StartTime to End of the day (Some date but different time)
2) Couple of complete days
3) Begin of the day to End date (Some date different time)

The second once is easy to calculate since these are complete days. The other ones are more difficult and should use datediff.
Replace the time with the end time of your time zone and use datediff.

0
 
LVL 2

Author Comment

by:KJHDI12
ID: 1447083
Well.. it's that last part i am having problems with..

I have no problem dividing the different days (It's only to run a for dLoop = DateValue(fromdate) to (Datevalue(ToDate))

If waty want the points he has to answer to this post again.

Mr. Fixit

0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 1

Expert Comment

by:zivf
ID: 1447084
you can build a class to hold the start-time and end-time and calculate inside it the times, and then have them output via properties or methods like "class.DayTime" "class.EveningTime" "class.NoonTime"
0
 
LVL 2

Author Comment

by:KJHDI12
ID: 1447085

Nice idea

Mr. Fixit
0
 
LVL 14

Accepted Solution

by:
waty earned 200 total points
ID: 1447086
KJHDI12 here is my post
0
 
LVL 2

Author Comment

by:KJHDI12
ID: 1447087

 Here you go...

    Mr. Fixit
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now