construction of datetime object from fixed date

This commit is contained in:
PyryL 2022-12-11 10:20:12 +02:00
parent 3442701195
commit 3b0f2cfe72
2 changed files with 16 additions and 2 deletions

View File

@ -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

View File

@ -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)