Gregorian::Gregorian() { time_t currenttime; k_time(¤ttime); int days_since_unix = (int) currenttime / (60 * 60 * 24); _mod_julian_day = days_since_unix + DAYS_BETWEEN_UNIX_AND_MOD_JULIAN; }
Date::Date(){ time_t mytime; k_time(&mytime); struct tm *t = gmtime(&mytime); int year = t->tm_year + 1900; unsigned int month = t->tm_mon + 1; // månaderna och dagarna int day = t->tm_mday; mjd_create = mjd_setup(year, month, day); }
lab2::Gregorian::Gregorian() { time_t time; k_time(&time); // Init time const struct tm *t = gmtime(&time); _year = t->tm_year + 1900; _month = t->tm_mon + 1; _day = t->tm_mday; _offset = gregorian_date_to_jdn(_year, _month, _day); }
void lab2::Gregorian::setDateToday() { time_t mytime; k_time(&mytime); // För att få ut datum lokalt struct tm *t = gmtime(&mytime); _year = t->tm_year + 1900; _month = t->tm_mon + 1; // månaderna och dagarna _day = t->tm_mday; }
Julian::Julian():Date(){ time_t mytime; k_time(&mytime); /*funkar i gregorian;*/ struct tm *t = gmtime(&mytime); int year = t->tm_year + 1900; int month = t->tm_mon +1; int day = t->tm_mday; offset = greg_julian_day(year,month,day); //Här får man inte anropa nåt virtuellt }
lab2::Julian::Julian() { time_t time; k_time(&time); // Init time const struct tm *t = gmtime(&time); unsigned int year = t->tm_year + 1900; unsigned int month = t->tm_mon + 1; unsigned int day = t->tm_mday; const long jdn = gregorian_date_to_jdn(year, month, day); _offset = jdn; jdn_to_date(); // sets _year, _month, _day }
Gregorian::Gregorian():Date(){ time_t mytime; k_time(&mytime); struct tm *t = gmtime(&mytime); int year = t->tm_year + 1900; int month = t->tm_mon +1; int day = t->tm_mday; offset = double_julian_day(year,month,day) ; //std::cout << "setting offset 1 " << offset << std::endl; }
Middle::Middle() : Date() { time_t theTime; k_time(&theTime); struct tm *aTime = gmtime(&theTime); _day = aTime->tm_mday; _month = aTime->tm_mon + 1; // Month is 0 - 11, add 1 to get a jan-dec 1-12 concept _year = aTime->tm_year + 1900; // Year is # years since 1900 //Assuming Gregorian system int a = (14 - _month)/12; int y = _year + 4800 - a; int m = _month + 12*a - 3; _numeric = _day + (153*m + 2)/5 + 365*y + y/4 - y/100 + y/400 - 32045; calculatedDate = 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(); }
JulianDate::JulianDate() : WesternDate(utc_seconds_to_mjd_offset(k_time(nullptr))) {}