construction of datetime object from fixed date
This commit is contained in:
parent
3442701195
commit
3b0f2cfe72
@ -1,4 +1,4 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from math import floor
|
||||
|
||||
class FixedDate:
|
||||
@ -36,6 +36,15 @@ class FixedDate:
|
||||
"""
|
||||
return (day_of_year, year)
|
||||
|
||||
@property
|
||||
def datetime(self) -> datetime:
|
||||
"""Construct a native datetime object from fixed date.
|
||||
|
||||
Returns:
|
||||
datetime: Datetime equal to the fixed date.
|
||||
"""
|
||||
return datetime(self.year, 1, 1) + timedelta(self._day_of_year-1)
|
||||
|
||||
@property
|
||||
def day_of_year(self):
|
||||
return self._day_of_year
|
||||
@ -99,6 +108,5 @@ class FixedDate:
|
||||
return 4
|
||||
return ((self.day_of_year-1) // 91) + 1
|
||||
|
||||
# TODO: datetime instance
|
||||
# TODO: plus and minus operations
|
||||
# TODO: equatable
|
||||
|
@ -5,6 +5,7 @@ from fixedcal.core.date import FixedDate
|
||||
class TestBasicDatetimeInit(unittest.TestCase):
|
||||
def test_datetime_init_january_first(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 1, 1))
|
||||
self.assertEqual(fixed_date.datetime, datetime(2022, 1, 1))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 1)
|
||||
self.assertEqual(fixed_date.day_of_month, 1)
|
||||
@ -16,6 +17,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
|
||||
def test_datetime_init_february_last(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 2, 25))
|
||||
self.assertEqual(fixed_date.datetime, datetime(2022, 2, 25))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 2)
|
||||
self.assertEqual(fixed_date.day_of_month, 28)
|
||||
@ -27,6 +29,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
|
||||
def test_datetime_init_sol_month(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 6, 20))
|
||||
self.assertEqual(fixed_date.datetime, datetime(2022, 6, 20))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 7)
|
||||
self.assertEqual(fixed_date.day_of_month, 3)
|
||||
@ -38,6 +41,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
|
||||
def test_datetime_init_middle_of_september(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 9, 15))
|
||||
self.assertEqual(fixed_date.datetime, datetime(2022, 9, 15))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 10)
|
||||
self.assertEqual(fixed_date.day_of_month, 6)
|
||||
@ -49,6 +53,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
|
||||
def test_datetime_init_december_last(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 12, 30))
|
||||
self.assertEqual(fixed_date.datetime, datetime(2022, 12, 30))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 13)
|
||||
self.assertEqual(fixed_date.day_of_month, 28)
|
||||
@ -61,6 +66,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
||||
|
||||
def test_datetime_init_year_day(self):
|
||||
fixed_date = FixedDate(date=datetime(2022, 12, 31))
|
||||
self.assertEqual(fixed_date.datetime, datetime(2022, 12, 31))
|
||||
self.assertEqual(fixed_date.year, 2022)
|
||||
self.assertEqual(fixed_date.month, 14)
|
||||
self.assertEqual(fixed_date.day_of_month, 1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user