year quarters added

This commit is contained in:
PyryL 2022-12-11 10:15:04 +02:00
parent 8a17432142
commit 3442701195
2 changed files with 27 additions and 1 deletions

View File

@ -88,7 +88,17 @@ class FixedDate:
"""
return ((self._day_of_year-1) // 7) + 1
# TODO: year quarter
@property
def year_quarter(self) -> int:
"""Quarter of the year. Value 4 for year day.
Returns:
int: In range 1...4
"""
if self.is_year_day:
return 4
return ((self.day_of_year-1) // 91) + 1
# TODO: datetime instance
# TODO: plus and minus operations
# TODO: equatable

View File

@ -12,6 +12,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
self.assertEqual(fixed_date.week_of_month, 1)
self.assertEqual(fixed_date.weekday, 1)
self.assertEqual(fixed_date.week_of_year, 1)
self.assertEqual(fixed_date.year_quarter, 1)
def test_datetime_init_february_last(self):
fixed_date = FixedDate(date=datetime(2022, 2, 25))
@ -22,6 +23,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
self.assertEqual(fixed_date.week_of_month, 4)
self.assertEqual(fixed_date.weekday, 7)
self.assertEqual(fixed_date.week_of_year, 8)
self.assertEqual(fixed_date.year_quarter, 1)
def test_datetime_init_sol_month(self):
fixed_date = FixedDate(date=datetime(2022, 6, 20))
@ -32,6 +34,18 @@ class TestBasicDatetimeInit(unittest.TestCase):
self.assertEqual(fixed_date.week_of_month, 1)
self.assertEqual(fixed_date.weekday, 3)
self.assertEqual(fixed_date.week_of_year, 25)
self.assertEqual(fixed_date.year_quarter, 2)
def test_datetime_init_middle_of_september(self):
fixed_date = FixedDate(date=datetime(2022, 9, 15))
self.assertEqual(fixed_date.year, 2022)
self.assertEqual(fixed_date.month, 10)
self.assertEqual(fixed_date.day_of_month, 6)
self.assertEqual(fixed_date.day_of_year, 258)
self.assertEqual(fixed_date.week_of_month, 1)
self.assertEqual(fixed_date.weekday, 6)
self.assertEqual(fixed_date.week_of_year, 37)
self.assertEqual(fixed_date.year_quarter, 3)
def test_datetime_init_december_last(self):
fixed_date = FixedDate(date=datetime(2022, 12, 30))
@ -43,6 +57,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
self.assertEqual(fixed_date.week_of_month, 4)
self.assertEqual(fixed_date.weekday, 7)
self.assertEqual(fixed_date.week_of_year, 52)
self.assertEqual(fixed_date.year_quarter, 4)
def test_datetime_init_year_day(self):
fixed_date = FixedDate(date=datetime(2022, 12, 31))
@ -54,3 +69,4 @@ class TestBasicDatetimeInit(unittest.TestCase):
self.assertEqual(fixed_date.week_of_month, 1)
self.assertEqual(fixed_date.weekday, 1)
self.assertEqual(fixed_date.week_of_year, 53)
self.assertEqual(fixed_date.year_quarter, 4)