# [date.h] Type: Date

## contents

#include "standard.h"
#include "sink.h"

## The Type

       The data type DATE is implemented as number of days since 01.01.0000.
       This origin date is represented by the number 0.

       The rules for the conversion of a date
         internal format <-->  external day/month/year-format
       rely on the Gregorian calendar:

       1) A normal year has 365 days, a leap year 366 days.
       2) All years, divisible by 4, are leap years, except
       3) the years, divisible by 100, this except
       4) the years, divisible by 400.

    typedef long Date; /* range DMY(01,01,0000) .. DMY(31,12,9999) */

## Init

    void date_init(void)
| init date module

## Date operations

    c_bool LeapYear(int Year)
| whether 'Year' is a leap year
    c_bool validDMY(int Day, int Month, int Year)
| whether 'Day'.'Month'.'Year' is a valid date
    Date DMY(int Day, int Month, int Year)
| converts 'Day'.'Month'.'Year' into the internal date format
    int Year(Date days)
| year of 'days' ( result >= 0 )
    int Month(Date date)
| month of 'date' ( result >= 1 )
    int Day(Date date)
| day of 'date' ( result >= 1 )
    int WeekDay(Date date)
| weekday of 'date' ( sunday = 0, saturday = 6 )
    Date Today(void)
| current date ( system clock )
    c_string CurTime(void)
| current time ( system clock ); allocs memory
    int MonthLength(int Month, int Year)
| the number of days in month
    Date Str_Date(c_string date)
| converts 'date' [ "dd.mm.yy" | "dd.mm.yyyy" ] into the internal date format
    c_string Date_Str(Date date)
| converts 'date' to string type [ "tt.mm.jjjj" ]; allocs memory

## Debug

    void pDate4(Date date)
| print 'date' [ "tt.mm.jjjj" ]
    void pDate2(Date date)
| print 'date' [ "tt.mm.jj" ]
    void pDateS(Date date)
| print 'date' [ "...Anno..." ]