Пример #1
0
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;
}
Пример #2
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;
}
Пример #3
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

    }
Пример #4
0
	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();
	}