day of year and week of month properites
This commit is contained in:
parent
683203e446
commit
dab58a8162
@ -1,4 +1,5 @@
|
||||
from datetime import datetime
|
||||
from math import floor
|
||||
|
||||
class FixedDate:
|
||||
def __init__(self, date = None, day_of_year = None, year = None):
|
||||
@ -35,6 +36,10 @@ class FixedDate:
|
||||
"""
|
||||
return (day_of_year, year)
|
||||
|
||||
@property
|
||||
def day_of_year(self):
|
||||
return self._day_of_year
|
||||
|
||||
@property
|
||||
def day_of_month(self):
|
||||
"""In range 1...29"""
|
||||
@ -54,7 +59,17 @@ class FixedDate:
|
||||
def is_year_day(self) -> bool:
|
||||
return self.month == 14 and self.day_of_month == 1
|
||||
|
||||
# TODO: week of month
|
||||
@property
|
||||
def week_of_month(self) -> int:
|
||||
"""The ordinal of the week in month. Value 1 for year day.
|
||||
|
||||
Returns:
|
||||
int: In range 1...4
|
||||
"""
|
||||
if self.is_year_day:
|
||||
return 1
|
||||
return ((self.day_of_month-1) // 7) + 1
|
||||
|
||||
# TODO: week of year
|
||||
# TODO: weekday
|
||||
# TODO: year quarter
|
||||
|
@ -8,18 +8,24 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 1)
|
||||
self.assertEqual(fixed_date.day_of_month, 1)
|
||||
self.assertEqual(fixed_date.day_of_year, 1)
|
||||
self.assertEqual(fixed_date.week_of_month, 1)
|
||||
|
||||
def test_datetime_init_february_last(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 2, 25))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 2)
|
||||
self.assertEqual(fixed_date.day_of_month, 28)
|
||||
self.assertEqual(fixed_date.day_of_year, 56)
|
||||
self.assertEqual(fixed_date.week_of_month, 4)
|
||||
|
||||
def test_datetime_init_sol_month(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 6, 20))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 7)
|
||||
self.assertEqual(fixed_date.day_of_month, 3)
|
||||
self.assertEqual(fixed_date.day_of_year, 171)
|
||||
self.assertEqual(fixed_date.week_of_month, 1)
|
||||
|
||||
def test_datetime_init_december_last(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 12, 30))
|
||||
@ -27,6 +33,8 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
self.assertEqual(fixed_date.month, 13)
|
||||
self.assertEqual(fixed_date.day_of_month, 28)
|
||||
self.assertFalse(fixed_date.is_year_day)
|
||||
self.assertEqual(fixed_date.day_of_year, 364)
|
||||
self.assertEqual(fixed_date.week_of_month, 4)
|
||||
|
||||
def test_datetime_init_year_day(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 12, 31))
|
||||
@ -34,3 +42,5 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
self.assertEqual(fixed_date.month, 14)
|
||||
self.assertEqual(fixed_date.day_of_month, 1)
|
||||
self.assertTrue(fixed_date.is_year_day)
|
||||
self.assertEqual(fixed_date.day_of_year, 365)
|
||||
self.assertEqual(fixed_date.week_of_month, 1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user