Days: Difference between revisions

From BR Wiki
Jump to navigation Jump to search
(edit)
 
No edit summary
Line 3: Line 3:
'''DAYS''' returns the absolute, sequential value which is assigned to dates after January 1, 1900.
'''DAYS''' returns the absolute, sequential value which is assigned to dates after January 1, 1900.


The "C" - century format specification is fully supported. [[BaseYear]] is used to determine the century for a date if the format specification used does not specify a century. See "BaseYear" in the [[BRConfig.sys]] specifications section for complete information.
[[BaseYear]] is used to determine the century for a date if the format specification used does not specify a century. See "BaseYear" in the [[BRConfig.sys]] specifications section for complete information.


===Comments and Examples===
===Comments and Examples===


PRIOR CENTURY
The Days function returns the specified date as a sequential value in relation to a base date of January 1, 1900. As an example of using this parameter for date arithmetic, line 300 would print "PAST DUE" if the date of an invoice '''IDATE''' is over 30 days from the current date.
 
The Days function returns the specified date as a sequential value in relation to a base date of January 1, 1900.   As an example of using this parameter for date arithmetic, line 300 would print "PAST DUE" if the date of an invoice (IDATE) is over 30 days from the current date.


  00030 IF Days(DATE)>Days(IDATE)+30 THEN PRINT "Past Due"
  00030 IF Days(DATE)>Days(IDATE)+30 THEN PRINT "Past Due"
Line 15: Line 13:
The DAYS function can now be used to store and perform date arithmetic on dates beginning with year 1700.  Negative numbers are used to denote such dates.
The DAYS function can now be used to store and perform date arithmetic on dates beginning with year 1700.  Negative numbers are used to denote such dates.


Notice that the number of days in a month, leap year, etc. do not have to be coded in your program because they are built into this function.<br>
Notice that the number of days in a month, leap year, etc. do not have to be coded in your program because they are built into this function.
 
If the numeric date parameter is invalid, the Days function will return zero. Therefore, the Days function can also be used to check the validity of dates entered from the keyboard. For example,
If the numeric date parameter is invalid, the Days function will return zero. Therefore, the Days function can also be used to check the validity of dates entered from the keyboard. For example,


  00010 LET DATE$("*y/m/d") ! be sure default format is year/month/day
  00010 LET DATE$("*y/m/d") ! be sure default format is year/month/day
  00020 LET M$="14"     ! month is invalid
  00020 LET M$="14"         ! month is invalid
  00030 LET D$="31"
  00030 LET D$="31"
  00040 LET Y$="88"
  00040 LET Y$="88"
  00050 LET D=VAL(Y$&M$&D$) ! D = 881431
  00050 LET D=VAL(Y$&M$&D$) ! D = 881431
  00060 PRINT Days(D)   ! invalid date = 0
  00060 PRINT Days(D)       ! invalid date = 0
  00070 LET M$="12"     ! month is valid
  00070 LET M$="12"         ! month is valid
  00080 LET D=VAL(Y$&M$&D$) ! D = 881231
  00080 LET D=VAL(Y$&M$&D$) ! D = 881231
  00090 PRINT Days(D)   ! valid date = 32507
  00090 PRINT Days(D)       ! valid date = 32507
  00095 LET DATE$("*m/d/y") ! change default format to month/day/year
  00095 LET DATE$("*m/d/y") ! change default format to month/day/year
  00096 PRINT Days(D)   ! invalid date = 0 (does not fit format)
  00096 PRINT Days(D)       ! invalid date = 0 (does not fit format)


The value of D in line 96 is invalid because line 95 changes the default format for dates (note the * at the start of the date string). The optional second parameter of the Days function can be used to temporarily change the date format. Line 97 will print a nonzero value because the date is valid in the format specified in the optional string parameter.
The value of D in line 96 is invalid because line 95 changes the default format for dates (note the * at the start of the date string). The optional second parameter of the Days function can be used to temporarily change the date format. Line 97 will print a nonzero value because the date is valid in the format specified in the optional string parameter.


  00097 PRINT Days(D,"y/m/d") ! valid date = 32507
  00097 PRINT Days(D,"y/m/d") ! valid date = 32507
  00098 PRINT Days(D) ! invalid date = 0 (does not fit format specified  in line 95)
  00098 PRINT Days(D)         ! invalid date = 0 (does not fit format specified  in line 95)


Line 98 returns zero because the format in line 97 only applies to that one function call. Since there is no asterisk in the date string, line 97 does not change the default date format, whereas line 95 does.
Line 98 returns zero because the format in line 97 only applies to that one function call. Since there is no asterisk in the date string, line 97 does not change the default date format, whereas line 95 does.
Line 41: Line 40:
The "date" parameter is a numeric expression that represents the date for which the number of days should be calculated. If "date" is not valid according to the current default format, Days will return 0.
The "date" parameter is a numeric expression that represents the date for which the number of days should be calculated. If "date" is not valid according to the current default format, Days will return 0.


The optional "format$" parameter is a string expression which identifies the format of the value to be returned. When the first character of the string expression includes an asterisk (*), it identifies the default format which should be used by the Date, Date$ and Days parameters until the workstation exits Business Rules or until the format is changed again. (Format changes affect the current workstation only.)
The optional "format$" parameter is a string expression which identifies the format of the value to be returned. When the first character of the string expression includes an asterisk (*), it identifies the default format which should be used by the Date, Date$ and Days parameters until the workstation exits Business Rules or until the format is changed again. Format changes affect the current workstation only.


The format$ parameter may include editing characters and any of the following date specifications: D (day), M (month), Y (year) or C (century). The total number of editing characters and date specifications may not exceed 6. Consecutive repetitions (DDD, YY, etc.) of the date specifications count as just one specification, but consecutive repetitions of editing characters do not use this rule. See the Date$ function for additional information about format$.
The format$ parameter may include separating characters and any of the following date specifications: D (day), M (month), Y (year) or C (century). The total number of separating characters and date specifications may not exceed 6. Consecutive repetitions (DDD, YY, etc.) of the date specifications count as just one specification, but consecutive repetitions of separating characters do not use this rule. See the Date$ function for additional information about format$.


===Related Functions===
===Related Functions===

Revision as of 10:04, 24 January 2012

DAYS (date[,format$])

DAYS returns the absolute, sequential value which is assigned to dates after January 1, 1900.

BaseYear is used to determine the century for a date if the format specification used does not specify a century. See "BaseYear" in the BRConfig.sys specifications section for complete information.

Comments and Examples

The Days function returns the specified date as a sequential value in relation to a base date of January 1, 1900. As an example of using this parameter for date arithmetic, line 300 would print "PAST DUE" if the date of an invoice IDATE is over 30 days from the current date.

00030 IF Days(DATE)>Days(IDATE)+30 THEN PRINT "Past Due"

The DAYS function can now be used to store and perform date arithmetic on dates beginning with year 1700. Negative numbers are used to denote such dates.

Notice that the number of days in a month, leap year, etc. do not have to be coded in your program because they are built into this function.

If the numeric date parameter is invalid, the Days function will return zero. Therefore, the Days function can also be used to check the validity of dates entered from the keyboard. For example,

00010 LET DATE$("*y/m/d") ! be sure default format is year/month/day
00020 LET M$="14"         ! month is invalid
00030 LET D$="31"
00040 LET Y$="88"
00050 LET D=VAL(Y$&M$&D$) ! D = 881431
00060 PRINT Days(D)       ! invalid date = 0
00070 LET M$="12"         ! month is valid
00080 LET D=VAL(Y$&M$&D$) ! D = 881231
00090 PRINT Days(D)       ! valid date = 32507
00095 LET DATE$("*m/d/y") ! change default format to month/day/year
00096 PRINT Days(D)       ! invalid date = 0 (does not fit format)

The value of D in line 96 is invalid because line 95 changes the default format for dates (note the * at the start of the date string). The optional second parameter of the Days function can be used to temporarily change the date format. Line 97 will print a nonzero value because the date is valid in the format specified in the optional string parameter.

00097 PRINT Days(D,"y/m/d") ! valid date = 32507
00098 PRINT Days(D)         ! invalid date = 0 (does not fit format specified  in line 95)

Line 98 returns zero because the format in line 97 only applies to that one function call. Since there is no asterisk in the date string, line 97 does not change the default date format, whereas line 95 does.

Parameters

The "date" parameter is a numeric expression that represents the date for which the number of days should be calculated. If "date" is not valid according to the current default format, Days will return 0.

The optional "format$" parameter is a string expression which identifies the format of the value to be returned. When the first character of the string expression includes an asterisk (*), it identifies the default format which should be used by the Date, Date$ and Days parameters until the workstation exits Business Rules or until the format is changed again. Format changes affect the current workstation only.

The format$ parameter may include separating characters and any of the following date specifications: D (day), M (month), Y (year) or C (century). The total number of separating characters and date specifications may not exceed 6. Consecutive repetitions (DDD, YY, etc.) of the date specifications count as just one specification, but consecutive repetitions of separating characters do not use this rule. See the Date$ function for additional information about format$.

Related Functions

See also Date$ and Date for other date processing functions.