#include #include #include #include "TTimeStamp.h" void test() { time_t ut = -295372800; // from GNU date 8.32: Mon 22 Aug 08:00:00 UTC 1960 TTimeStamp tts(ut, 0); std::printf("Original time_t = %+10ld; TTimeStamp = %s\n", ut, tts.AsString("s")); unsigned d = tts.GetDate(); unsigned H, M, S; tts.GetTime(true, 0, &H, &M, &S); std::printf("Values extracted from TTimeStamp: date = %u; H = %u, M = %u, S = %u\n", d, H, M, S); ut -= H*3600 + M*60 + S; std::printf("Shifted time_t to start of day = %+10ld; TTimeStamp = %s\n", ut, TTimeStamp(ut, 0).AsString("s")); TTimeStamp tt1(d, 0u, 0u, true, 0); std::printf("TTimeStamp(%u, 0u, 0u, true, 0) = %s, time_t = %+10ld\n", d, tt1.AsString("s"), (time_t)tt1); TTimeStamp tt2(1960, 8, 22, 0, 0, 0); std::printf("TTimeStamp(1960, 8, 22, 0, 0, 0) = %s, time_t = %+10ld\n", tt2.AsString("s"), (time_t)tt2); std::printf("\n"); const std::vector days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; ut = -410227200; // from GNU date 8.32: Mon 1 Jan 00:00:00 UTC 1957 for (int year = 1957; year <= 1958; ++year) { for (int month = 1; month <= 12; ++month) { int add_day = month == 2 && TTimeStamp::IsLeapYear(year); for (int day = 1; day <= days[month-1] + add_day; ++day, ut += 86400) { TTimeStamp tt3(year, month, day, 0, 0, 0); std::string date3 = tt3.AsString("s"); date3.erase(10); TTimeStamp tt4(ut, 0); std::string date4 = tt4.AsString("s"); date4.erase(10); std::printf("In:%d-%02d-%02d Out:%s %+10ld; In:%+10ld Out:%+10ld %s\n", year, month, day, date3.c_str(), (time_t)tt3, ut, (time_t)tt4, date4.c_str()); } } } }