From 4875a3dd9b183dcd2256e2abfc4ccf7484c233b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 7 Dec 2022 13:17:14 +0100 Subject: New upstream version 4.0.2 --- html/xbc4.htm | 151 ---------------------------------------------------------- 1 file changed, 151 deletions(-) delete mode 100755 html/xbc4.htm (limited to 'html/xbc4.htm') diff --git a/html/xbc4.htm b/html/xbc4.htm deleted file mode 100755 index f570ed7..0000000 --- a/html/xbc4.htm +++ /dev/null @@ -1,151 +0,0 @@ - - -Xbase DBMS Chapter 4 - -

Date Processing

-

Chapter Updated 2/12/99


- -The objective of this chapter is to provide information regarding -the basic concepts of date arithmetic and supply generic -C/C++ date methods.

- -Two common things of all programmers is that if they write -enough code, they will eventually have to deal with dates. They -may be Julian dates, Gregorian dates, or a date with their best -freind's girl, but they'll eventually be working with dates. The -other thing is that most programmers don't have the time or don't -want to spend time writing mundane date routines.

- -To explain how dates work, I'll give a brief overview and history of Julian -dates, Gregorian dates, leap years and leap centuries. - -

Leap Years

- -Due to the fact that it actually takes about 365 1/4 days for -the earth to circle the sun, every fourth year and every fourth -century have an extra day added to the end of February and the year -is called a leap year. Leap years have 366 days, non leap years -have 365 days. The following code segment describes how to -determine if a given year is a leap year. - -A leap year is a year having 366 days, which can be evenly -divisible by 4 and not by 100 or divisible by 400. - -There are also leap centuries. Leap centuries are years which -are evenly divisible by 400. - -To calculate a leap year, the following code segment can be used - - - int year; - - if(( year % 4 == 0 && year % 100 != 0 ) || year % 400 = 0 ) - LEAP_YEAR = TRUE; - else - LEAP_YEAR = FALSE - - - -

Julian Dates

- -Around the time of Jesus Christ, a fellow with the name of Julias Ceasar -established the Julian calendar. The Julian calendar established every -fourth year as a leap year with 366 days and all other years having 365 days. -The months were set up the same as they are with a Gregorian calendar, which -is what we use today. A Julian date is defined as as the number of days from the -first day of the year; February 1 would have a Julian day of 32.

- -From a programmer's perspective, Julian dates are useful for doing date -arithmetic, determining the difference between two dates or calculating -a future or past date.

- -To determine the difference between two dates, convert both dates to a -Julian date and subtract one from the other.

- -To calculate a future or past date, convert the base date to a Julian date, -add (or subtract) the number of days necessary to (from) it and convert the -julian date back to a Gregorian date.

- -The Julian date routines use a base date of 01/01/1900.

- -

Gregorian Dates

- -In 1582, Pope Gregor XIII introduced a corrected form of the Julian calendar. -Every 4th year still has 366 days except for century years. Century years -were added as leap years if evenly divisible by 400. The year 2000 is a leap century. -

- -The methods supplied with this software are based on gregorian dates with -the format of CCYYMMDD for century, year, month and day.

- - -

CASTELLANO options

- -There is an option in the options.h file for enabling the date routines -to return Spanish values for days, weeks and months.

-#define CASTELLANO

- -

Date Formats

- -All dates are stored in the .DBF files with format CCYYMMDD.

- -All date routines work with dates formated with the same CCYYMMDD format.

- -

Sample Program

- - -#include <iostream.h> -#include <xbase/xbase.h> - -main() -{ - xbXBase x; - long l; - - cout << "\nThis program tests the XDATE routines\n\n"; - - - cout << "\nThis year is " << x.YearOf ( x.Sysdate() ); - cout << "\nThis Month is " << x.MonthOf( x.Sysdate() ); - cout << "\nToday is day " << x.DayOf( WEEK, x.Sysdate()) << " of the week"; - cout << "\nToday is day " << x.DayOf( MONTH, x.Sysdate()) << " of the month"; - cout << "\nToday is day " << x.DayOf( YEAR, x.Sysdate()) << " of the year"; - - if( x.IsLeapYear( x.Sysdate())) - cout << "\nThis is a leapyear"; - else - cout << "\nThis is not a leap year."; - - cout << "\nToday is " << x.Sysdate(); - - if( x.DateIsValid( "19951301" )) - cout << "\n19951301 is a valid date"; - else - cout << "\n19951301 is not a valid date"; - - l = x.JulianDays( "19951101" ) - x.JulianDays( "19951001" ); - - cout << "\nThere are " << l - << " days between 10/1/95 and 11/1/95."; - - cout << "\nIn 7 days it will be " - << x.JulToDate8( x.JulianDays( x.Sysdate()) + 7L ); - - cout << "\nToday is " << x.CharDayOf( x.Sysdate()); - cout << "\nThis month is " << x.CharMonthOf( x.Sysdate()); - - cout << "\nFormat (YYDDD) "; - cout << x.FormatDate( "YYDDD", x.Sysdate()); - cout << "\nFormat (MM/DD/YY) "; - cout << x.FormatDate( "MM/DD/YY", x.Sysdate()); - cout << "\nFormat (MMMM DD,YYYY) "; - cout << x.FormatDate( "MMMM DD,YYYY", x.Sysdate()); - cout << "\nFormat (DDDD, MMMM DD YYYY) "; - cout << x.FormatDate( "DDDD, MMMM DD YYYY", x.Sysdate()); - cout << "\n"; -} - -
-



- - -- cgit v1.2.3