Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Date/time function

Posted on 1998-11-27
8
162 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
Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

 
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
 
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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

856 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