ATC
Advanced Trip Computer
C:/Documents and Settings/Giorgio/Desktop/ATC-Windows7 (VS2010)/Date.h
Vai alla documentazione di questo file.
00001 
00009 class Date {
00010 
00011 private:
00012 
00013 unsigned int day;       // giorno
00014 unsigned int month;     // mese
00015 unsigned int year;      // anno
00016 
00023 int julianNumber(Date d)
00024 {
00025  int c, y, m;
00026  
00027  c = (14-d.getMonth())/12;
00028  y = d.getYear()+4800-c;
00029  m = d.getMonth()+12*c-3;
00030 
00031  return d.getDay()+(153*m+2)/5+365*y+y/4-y/100+y/400-32045;
00032 }
00033 
00034 public:
00035 
00043 Date(unsigned int d=1, unsigned int m=1, unsigned int y=2000)
00044 {
00045  day = 1;
00046  month = 1;
00047  year = 2000;
00048  if (y<1 || m<1 || m>12 || d<1)
00049    return;
00050  if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
00051    if (d>31)
00052          return;
00053  if (m==4 || m==6 || m==9 || m==11)
00054    if (d>30)
00055          return;
00056  if (m==2 && y%4==0) // bisestile
00057    if (d>29) return;
00058  if (m==2 && y%4!=0) // non bisestile
00059    if (d>28) return;
00060  year = y;
00061  month = m;
00062  day = d;
00063 }
00067 unsigned int getDay(void)
00068 {
00069  return day;
00070 }
00074 unsigned int getMonth(void)
00075 {
00076  return month;
00077 }
00081 unsigned int getYear(void)
00082 {
00083  return year;
00084 }
00090 int     dayDifference(Date d)
00091 {
00092  int my_jn, jn;
00093 
00094  my_jn = julianNumber(*this);
00095  jn = julianNumber(d);
00096 
00097  return (jn - my_jn);
00098 }
00099 };