From 6e8c2da1185c516a3c19871b3b89268f7bccb67c Mon Sep 17 00:00:00 2001 From: PyryL Date: Sun, 11 Dec 2022 10:03:43 +0200 Subject: [PATCH] week of year --- fixedcal/core/date.py | 10 +++++++++- tests/basic_datetime_test.py | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/fixedcal/core/date.py b/fixedcal/core/date.py index afa6c0b..f7df0f6 100644 --- a/fixedcal/core/date.py +++ b/fixedcal/core/date.py @@ -70,7 +70,15 @@ class FixedDate: return 1 return ((self.day_of_month-1) // 7) + 1 - # TODO: week of year + @property + def week_of_year(self) -> int: + """The ordinal of the week in year. Value 53 for year day. + + Returns: + int: In range 1...53 + """ + return ((self._day_of_year-1) // 7) + 1 + # TODO: weekday # TODO: year quarter # TODO: datetime instance diff --git a/tests/basic_datetime_test.py b/tests/basic_datetime_test.py index 5cb8ee8..fc51f6a 100644 --- a/tests/basic_datetime_test.py +++ b/tests/basic_datetime_test.py @@ -10,6 +10,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.day_of_month, 1) self.assertEqual(fixed_date.day_of_year, 1) self.assertEqual(fixed_date.week_of_month, 1) + self.assertEqual(fixed_date.week_of_year, 1) def test_datetime_init_february_last(self): fixed_date = FixedDate(date=datetime(2022, 2, 25)) @@ -18,6 +19,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.day_of_month, 28) self.assertEqual(fixed_date.day_of_year, 56) self.assertEqual(fixed_date.week_of_month, 4) + self.assertEqual(fixed_date.week_of_year, 8) def test_datetime_init_sol_month(self): fixed_date = FixedDate(date=datetime(2022, 6, 20)) @@ -26,6 +28,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertEqual(fixed_date.day_of_month, 3) self.assertEqual(fixed_date.day_of_year, 171) self.assertEqual(fixed_date.week_of_month, 1) + self.assertEqual(fixed_date.week_of_year, 25) def test_datetime_init_december_last(self): fixed_date = FixedDate(date=datetime(2022, 12, 30)) @@ -35,6 +38,7 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertFalse(fixed_date.is_year_day) self.assertEqual(fixed_date.day_of_year, 364) self.assertEqual(fixed_date.week_of_month, 4) + self.assertEqual(fixed_date.week_of_year, 52) def test_datetime_init_year_day(self): fixed_date = FixedDate(date=datetime(2022, 12, 31)) @@ -44,3 +48,4 @@ class TestBasicDatetimeInit(unittest.TestCase): self.assertTrue(fixed_date.is_year_day) self.assertEqual(fixed_date.day_of_year, 365) self.assertEqual(fixed_date.week_of_month, 1) + self.assertEqual(fixed_date.week_of_year, 53)