/* paivays.cpp */ // Malliohjelma p„iv„yksen ottamiseksi koneesta/ vl-96 #include #include #include #include //--------------------------------------------------------------------------- // P„iv„m„„r„-luokka, mukana vain p„iv„ykseen liittyv„ class cPvm { private: int pv; int kk; int vv; public: const cPvm &paivays() { // Palautetaan nykyinen p„iv„m„„r„ time_t t = time(NULL); // Antaa ajan sekunteina 1.1.1970 laskien struct tm *d = localtime(&t); // Muuttaa time_t tyyppisen ajan tietueeksi // d:n osoittama paikka s„ilyy vain seur. pv = d->tm_mday; // localtime kutsuun, joten se on syyt„ kk = d->tm_mon+1; // kopioida ajoissa jonnekin muuallle. vv = 1900+d->tm_year; return *this; } void alusta(int ap=0,int ak=0, int av=0) { paivays(); if ( ap > 0 ) pv = ap; if ( ak > 0 ) kk = ak; if ( av > 0 ) vv = av; if ( 50 < vv && vv < 100 ) vv += 1900; if ( 0 < vv && vv <= 50 ) vv += 2000; } cPvm(int ap=0,int ak=0, int av=0) { alusta(ap,ak,av); } // cPvm(int ap,int ak, int av) { alusta(ap,ak,av); } ostream &tulosta(ostream &os = cout) const { char oldf = os.fill('0'); os << setw(2) << pv << "." << setw(2) << kk << "." << setw(4) << vv; os.fill(oldf); return os; } cPvm &operator=(const char *s) { int p=0,k=0,v=0; sscanf(s,"%d.%d.%d",&p,&k,&v); alusta(p,k,v); return *this; } }; // cPvm //--------------------------------------------------------------------------- ostream &operator<<(ostream &os,const cPvm &pvm) { return pvm.tulosta(os); } //--------------------------------------------------------------------------- int main(void) { cPvm tammi96(1,1,96), maalis2000(1), tanaan; cout << tammi96 << " " << maalis2000 << " " << tanaan << endl; cPvm pvm; pvm = "12.1.1995"; cout << pvm << endl; pvm = "13.2" ; cout << pvm << endl; pvm = "14" ; cout << pvm << endl; pvm.alusta(4); return 0; }