diff options
author | sobols <sobols@yandex-team.ru> | 2022-02-10 16:47:08 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:08 +0300 |
commit | 03335cb18337a0ef51966452a66a69b01abea218 (patch) | |
tree | b83306b6e37edeea782e9eed673d89286c4fef35 /util/draft | |
parent | 09961b69c61f471ddd594e0fd877df62a8021562 (diff) | |
download | ydb-03335cb18337a0ef51966452a66a69b01abea218.tar.gz |
Restoring authorship annotation for <sobols@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/draft')
-rw-r--r-- | util/draft/datetime.cpp | 30 | ||||
-rw-r--r-- | util/draft/datetime.h | 6 | ||||
-rw-r--r-- | util/draft/datetime_ut.cpp | 34 |
3 files changed, 35 insertions, 35 deletions
diff --git a/util/draft/datetime.cpp b/util/draft/datetime.cpp index aebbec25d34..5cbe7d88477 100644 --- a/util/draft/datetime.cpp +++ b/util/draft/datetime.cpp @@ -17,25 +17,25 @@ namespace NDatetime { {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} //leap }; - const ui32 MonthDaysNewYear[2][13] = { - {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, //nleap - {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366} //leap + const ui32 MonthDaysNewYear[2][13] = { + {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, //nleap + {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366} //leap }; - void YDayToMonthAndDay(ui32 yday, bool isleap, ui32* month, ui32* mday) { - const ui32* begin = MonthDaysNewYear[isleap] + 1; - const ui32* end = begin + 12; - // [31, ..., 365] or [31, ..., 366] (12 elements) - - const ui32* pos = UpperBound(begin, end, yday); + void YDayToMonthAndDay(ui32 yday, bool isleap, ui32* month, ui32* mday) { + const ui32* begin = MonthDaysNewYear[isleap] + 1; + const ui32* end = begin + 12; + // [31, ..., 365] or [31, ..., 366] (12 elements) + + const ui32* pos = UpperBound(begin, end, yday); Y_ENSURE(pos != end, "day no. " << yday << " does not exist in " << (isleap ? "leap" : "non-leap") << " year"); - - *month = pos - begin; - *mday = yday - *(pos - 1) + 1; - + + *month = pos - begin; + *mday = yday - *(pos - 1) + 1; + Y_ASSERT((*month < 12) && (1 <= *mday) && (*mday <= MonthDays[isleap][*month])); - } - + } + struct TTimeData { i32 IsDst = 0; i32 GMTOff = 0; diff --git a/util/draft/datetime.h b/util/draft/datetime.h index 8f84d13132b..8a387ea6f1b 100644 --- a/util/draft/datetime.h +++ b/util/draft/datetime.h @@ -12,7 +12,7 @@ namespace NDatetime { extern const ui32 MonthDays[2][12]; // !leapYear; !!leapYear - extern const ui32 MonthDaysNewYear[2][13]; // !leapYear; !!leapYear + extern const ui32 MonthDaysNewYear[2][13]; // !leapYear; !!leapYear inline ui32 YearDaysAD(ui32 year) { year = Max<ui32>(year, 1) - 1; //1 AD comes straight after 1 BC, no 0 AD @@ -27,8 +27,8 @@ namespace NDatetime { return MonthDaysNewYear[isleap][Min(month, (ui32)11u)] + mday - 1; } - void YDayToMonthAndDay(ui32 yday /*0 - based*/, bool isleap, ui32* month /*0 - based*/, ui32* mday /*1 - based*/); - + void YDayToMonthAndDay(ui32 yday /*0 - based*/, bool isleap, ui32* month /*0 - based*/, ui32* mday /*1 - based*/); + struct TSimpleTM { enum EField { F_NONE = 0, diff --git a/util/draft/datetime_ut.cpp b/util/draft/datetime_ut.cpp index da103dace6d..a5e065ef6e8 100644 --- a/util/draft/datetime_ut.cpp +++ b/util/draft/datetime_ut.cpp @@ -62,23 +62,23 @@ Y_UNIT_TEST_SUITE(TSimpleTMTest) { } Y_UNIT_TEST(TestYDayConversion) { - using namespace NDatetime; - ui32 month; - ui32 mday; - - for (ui32 yday = 0; yday < 365; ++yday) { - YDayToMonthAndDay(yday, false, &month, &mday); - UNIT_ASSERT_VALUES_EQUAL(yday, YDayFromMonthAndDay(month, mday, false)); - } - for (ui32 yday = 0; yday < 366; ++yday) { - YDayToMonthAndDay(yday, true, &month, &mday); - UNIT_ASSERT_VALUES_EQUAL(yday, YDayFromMonthAndDay(month, mday, true)); - } - - UNIT_ASSERT_EXCEPTION(YDayToMonthAndDay(365, false, &month, &mday), yexception); - UNIT_ASSERT_EXCEPTION(YDayToMonthAndDay(366, true, &month, &mday), yexception); - } - + using namespace NDatetime; + ui32 month; + ui32 mday; + + for (ui32 yday = 0; yday < 365; ++yday) { + YDayToMonthAndDay(yday, false, &month, &mday); + UNIT_ASSERT_VALUES_EQUAL(yday, YDayFromMonthAndDay(month, mday, false)); + } + for (ui32 yday = 0; yday < 366; ++yday) { + YDayToMonthAndDay(yday, true, &month, &mday); + UNIT_ASSERT_VALUES_EQUAL(yday, YDayFromMonthAndDay(month, mday, true)); + } + + UNIT_ASSERT_EXCEPTION(YDayToMonthAndDay(365, false, &month, &mday), yexception); + UNIT_ASSERT_EXCEPTION(YDayToMonthAndDay(366, true, &month, &mday), yexception); + } + Y_UNIT_TEST(SimpleTMTest) { using namespace NDatetime; |