int main() { set_k_time(std::time(NULL)); lab2::Gregorian g; std::cout << g << std::endl; std::cout << g.week_day_name() << std::endl; lab2::Julian j; std::cout << j << std::endl; std::cout << j.week_day_name() << std::endl; g.add_year(4); std::cout << g << std::endl; lab2::Gregorian d(2004, 2, 29); std::cout << "test leap day: " << d << std::endl; d.add_year(4); std::cout << "add 4 years: " << d << std::endl; d.add_year(1); std::cout << "add 1 year: " << d << std::endl; lab2::Gregorian r = ++d; std::cout << "++d: " << d << ", return: " << r << std::endl; lab2::Gregorian r2 = d += 30; std::cout << "d += 1: " << d << ", return: " << r2 << std::endl; lab2::Gregorian r1 = d++; std::cout << "d++: " << d << ", return: " << r1 << std::endl; lab2::Gregorian good(2004, 2, 29); std::cout << "created 2004-02-29: " << good << std::endl; try { lab2::Gregorian bad(2003, 2, 29); std::cout << "created 2003-02-29 (wrong!): " << bad << std::endl; } catch (std::out_of_range) { std::cout << "caught exception from invalid date" << std::endl; } /* Test a large date */ lab2::Gregorian future(2560, 10, 2); std::cout << " Gregorian(2560, 10, 2) : " << future << std::endl; return 0; }
int main(int argc, const char * argv[]) { // init kattis time time_t tp; time(&tp); set_k_time(tp); // get kattis time time_t mytime; k_time(&mytime); struct tm *t = gmtime(&mytime); int year = t->tm_year + 1900; int month = t->tm_mon + 1; // månaderna och dagarna int day = t->tm_mday; // indexerade från ETT std::cout << mytime << std::endl << year << std::endl << month << std::endl << day << std::endl; return 0; }
//Default contructor Date::Date(){ //////////////////////////////////////////////////////////// // Sätt tiden. OBS skicka inte nedanstående kod till kattis time_t mytime; #if 1 time(&mytime); set_k_time(mytime); #endif //////////////////////////////////////////////////////////// // För att få nuvarande tid k_time(&mytime); // För att få ut datum lokalt struct tm* t = gmtime(&mytime); y = t->tm_year + 1900; m = t->tm_mon + 1; // månaderna och dagarna d = t->tm_mday; // indexerade från ETT }
Julian::Julian() { // Om vi använder visual studio - använd ej kattistime #if VISUAL_STUDIO == 1 time_t rawtime; struct tm timeinfo; time(&rawtime); localtime_s(&timeinfo, &rawtime); int t_year = timeinfo.tm_year + 1900; unsigned t_month = timeinfo.tm_mon + 1; unsigned t_day = timeinfo.tm_mday; // Om vi inte använder visual studio - använd kattistime #elif VISUAL_STUDIO == 0 #if DEBUG == 1 time_t tp; time(&tp); set_k_time(tp); #endif // För att få nuvarande tid time_t mytime; k_time(&mytime); // För att få ut datum lokalt struct tm *t = gmtime(&mytime); int t_year = t->tm_year + 1900; unsigned t_month = t->tm_mon + 1; // månaderna och dagarna unsigned t_day = t->tm_mday; // indexerade från ETT #endif // Uppdatera julian date number int a = (int)floor((14 - t_month) / 12); int y = t_year + 4800 - a; int m = t_month + 12 * a - 3; jdn = t_day + (int)floor((153.0 * m + 2.0) / 5.0) + 365 * y + (int)floor(y / 4.0) - (int)floor(y / 100.0) + (int)floor(y / 400.0) - 32045; // Eftersom de uträknade yymmdd är gregorian och inte julian - kalla på refresh för att uppdatera från jdn istället refresh(); }