################################################################################
  Kodowanie Windows-1250, koniec wiersza CR+LF, test: Za gl ja
  DateTime - Data i czas
  Copyleft (C) 2007 Adam Sawicki
  Licencja: GNU LGPL
  Kontakt: mailto:sawickiap@poczta.onet.pl , http://regedit.gamedev.pl/
################################################################################


Uwagi oglne
================================================================================

- Modu nie jest moe ekstremalnie optymalny, ale jest pisany pod ktem
  szybkoci i elegancji.
- Wzorowany jest bibliotece wxWidgets - na module datetime (klasa wxDateTime i
  pokrewne).
- Bezpieczny zakres czasu, na ktrym potrafi operowa modu, to mniej wicej
  lata 1970 - 2037.
- Wcza <time.h>


Dostpne typy
================================================================================

- WEEKDAY - enum
  Dzie tygodnia
- MONTH - enum
  Miesic roku
- NAME_FORM - enum (flagi bitowe)
  Sposb generowania nazw dla dni tygodnia i miesicy
- DATESPAN - struct
  Reprezentuje odcinek czasu. Przechowuje osobne liczby cakowite dla: lat,
  miesicy, tygodni i dni. Mona za jego pomoc przesuwa TMSTRUCT.
- TIMESPAN - struct
  Reprezentuje odcinek czasu. Przechowuje liczb cakowit ze znakiem w
  milisekundach. Mona za jego pomoc przesuwa DATETIME.
- TMSTRUCT - struct
  Reprezentuje moment czasu. Przechowuje osobne pola: dzien, miesic, rok,
  godzina, minuta, sekunda, milisekunda. Pamita take dzie tygodnia, ktry
  wyliczany jest przy pierwszym odczytaniu (pole mutable).
- DATETIME - struct
  Reprezentuje moment czasu. Przechowuje liczb milisekund od epoki Uniksowej,
  czyli 1 stycznia 1970.


Konwersja z acuchami
================================================================================

- DATETIME:
  SthToStr - pokazuje liczb milisekund
- TIMESPAN:
  Metody ToString, ToString_Nice
  SthToStr - pokazuje liczb milisekund
- TMSTRUCT:
  Funkcje DateToStr, StrToDate
  SthToStr, StrToSth - konwersja na acuch wg domylnego formatu DEFAULT_FORMAT

acuch formatujcy - znaki o specjalnym znaczeniu:

- h  - godzina 0-23
- H  - godzina 00-23
- m  - minuta 0-59
- M  - minuta 00-59
- s  - sekunda 0-59
- S  - sekunda 00-59
- w  - dzie tygodnia 1-7
- W  - dzie tygodnia 1-7
- wl - dzie tygodnia pn-ndz
- wf - dzie tygodnia Pn-Ndz
- wu - dzie tygodnia PN-NDZ
- Wl - dzie tygodnia poniedziaek-niedziela
- Wf - dzie tygodnia Poniedziaek-Niedziela
- Wu - dzie tygodnia PONIEDZIAEK-NIEDZIELA
- d  - dzie 1-31
- D  - dzie 01-31
- n  - miesic 1-12
- N  - miesic 01-12
- nl - miesic sty-gru
- nf - miesic Sty-Gru
- nu - miesic STY-GRU
- Nl - miesic stycze-grudzie
- Nf - miesic Stycze-Grudzie
- Nu - miesic STYCZE-GRUDZIE
- y  - rok np. 97, 03
- Y  - rok np. 1997, 2003
- i  - milisekunda 0-999
- I  - milisekunda 000-999

Kady inny znak jest traktowany dosownie.

Podczas parsowania StrToDate:

- Kada liczba moe by lub nie by poprzedzona pocztkowymi zerami.
- Kada nazwa moe by w dowolnym z formatw.
- Dzie tygodnia jest ignorowany.


Konwersje midzy typami
================================================================================

DATETIME  -> TMSTRUCT  : TMSTRUCT::ctor, TMSTRUCT::Set
TMSTRUCT  -> DATETIME  : DATETIME::ctor, DATETIME::Set
time_t    -> DATETIME  : DATETIME::ctor, DATETIME::Set
DATETIME  -> time_t    : DATETIME::GetTicks
struct tm -> DATETIME  : DATETIME::ctor, DATETIME::Set
struct tm -> TMSTRUCT  : TMSTRUCT::ctor, TMSTRUCT::Set
TMSTRUCT  -> struct tm : TMSTRUCT::GetTm


Operatory
================================================================================

- Konstruktory

  Kady ma te odpowiadajc metod Set.
  
  DATESPAN() - niezainicjalizowany
  DATESPAN(Years, Months, Weeks, Days)
  
  TIMESPAN() - niezainicjalizowany
  TIMESPAN(int8) - milisekundy
  TIMESPAN(Hours, Minutes, Seconds, [Milliseconds])
  
  TMSTRUCT() - niezainicjalizowany
  TMSTRUCT(DATETIME)
  TMSTRUCT(struct tm)
  
  DATETIME(Day, Month, Year, Hour, Minute, Second, [Millisecond])
  DATETIME(Day, Month, Year)
  DATETIME(time_t)
  DATETIME(struct tm)
  DATETIME(TMSTRUCT)

- Operatory porwnania

  DATESPAN == DATESPAN, DATESPAN != DATESPAN
  
  TIMESPAN == TIMESPAN, TIMESPAN != TIMESPAN
  TIMESPAN <  TIMESPAN, TIMESPAN >  TIMESPAN
  TIMESPAN <= TIMESPAN, TIMESPAN >= TIMESPAN
  
  DATETIME == DATETIME, DATETIME != DATETIME
  DATETIME <  DATETIME, DATETIME >  DATETIME
  DATETIME <= DATETIME, DATETIME >= DATETIME

- Operatory arytmetyczne

  Kady ma te wersj z przypisaniem np. +=

  DATESPAN + DATESPAN = DATESPAN
  DATESPAN - DATESPAN = DATESPAN
  DATESPAN * int = DATESPAN, int * DATESPAN = DATESPAN

  TIMESPAN + TIMESPAN = TIMESPAN
  TIMESPAN - TIMESPAN = TIMESPAN
  TIMESPAN * int = TIMESPAN, int * TIMESPAN = TIMESPAN
  -TIMESPAN

  TMSTRUCT + DATESPAN = TMSTRUCT
  TMSTRUCT - DATESPAN = TMSTRUCT

  DATETIME + TIMESPAN = DATETIME
  DATETIME - TIMESPAN = DATETIME

  DATETIME - DATETIME = TIMESPAN

