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
|
from math import floor
|
||||||
|
|
||||||
class FixedDate:
|
class FixedDate:
|
||||||
@ -36,6 +36,15 @@ class FixedDate:
|
|||||||
"""
|
"""
|
||||||
return (day_of_year, year)
|
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
|
@property
|
||||||
def day_of_year(self):
|
def day_of_year(self):
|
||||||
return self._day_of_year
|
return self._day_of_year
|
||||||
@ -99,6 +108,5 @@ class FixedDate:
|
|||||||
return 4
|
return 4
|
||||||
return ((self.day_of_year-1) // 91) + 1
|
return ((self.day_of_year-1) // 91) + 1
|
||||||
|
|
||||||
# TODO: datetime instance
|
|
||||||
# TODO: plus and minus operations
|
# TODO: plus and minus operations
|
||||||
# TODO: equatable
|
# TODO: equatable
|
||||||
|
@ -5,6 +5,7 @@ from fixedcal.core.date import FixedDate
|
|||||||
class TestBasicDatetimeInit(unittest.TestCase):
|
class TestBasicDatetimeInit(unittest.TestCase):
|
||||||
def test_datetime_init_january_first(self):
|
def test_datetime_init_january_first(self):
|
||||||
fixed_date = FixedDate(date=datetime(2022, 1, 1))
|
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.year, 2022)
|
||||||
self.assertEqual(fixed_date.month, 1)
|
self.assertEqual(fixed_date.month, 1)
|
||||||
self.assertEqual(fixed_date.day_of_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):
|
def test_datetime_init_february_last(self):
|
||||||
fixed_date = FixedDate(date=datetime(2022, 2, 25))
|
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.year, 2022)
|
||||||
self.assertEqual(fixed_date.month, 2)
|
self.assertEqual(fixed_date.month, 2)
|
||||||
self.assertEqual(fixed_date.day_of_month, 28)
|
self.assertEqual(fixed_date.day_of_month, 28)
|
||||||
@ -27,6 +29,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
|||||||
|
|
||||||
def test_datetime_init_sol_month(self):
|
def test_datetime_init_sol_month(self):
|
||||||
fixed_date = FixedDate(date=datetime(2022, 6, 20))
|
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.year, 2022)
|
||||||
self.assertEqual(fixed_date.month, 7)
|
self.assertEqual(fixed_date.month, 7)
|
||||||
self.assertEqual(fixed_date.day_of_month, 3)
|
self.assertEqual(fixed_date.day_of_month, 3)
|
||||||
@ -38,6 +41,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
|||||||
|
|
||||||
def test_datetime_init_middle_of_september(self):
|
def test_datetime_init_middle_of_september(self):
|
||||||
fixed_date = FixedDate(date=datetime(2022, 9, 15))
|
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.year, 2022)
|
||||||
self.assertEqual(fixed_date.month, 10)
|
self.assertEqual(fixed_date.month, 10)
|
||||||
self.assertEqual(fixed_date.day_of_month, 6)
|
self.assertEqual(fixed_date.day_of_month, 6)
|
||||||
@ -49,6 +53,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
|||||||
|
|
||||||
def test_datetime_init_december_last(self):
|
def test_datetime_init_december_last(self):
|
||||||
fixed_date = FixedDate(date=datetime(2022, 12, 30))
|
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.year, 2022)
|
||||||
self.assertEqual(fixed_date.month, 13)
|
self.assertEqual(fixed_date.month, 13)
|
||||||
self.assertEqual(fixed_date.day_of_month, 28)
|
self.assertEqual(fixed_date.day_of_month, 28)
|
||||||
@ -61,6 +66,7 @@ class TestBasicDatetimeInit(unittest.TestCase):
|
|||||||
|
|
||||||
def test_datetime_init_year_day(self):
|
def test_datetime_init_year_day(self):
|
||||||
fixed_date = FixedDate(date=datetime(2022, 12, 31))
|
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.year, 2022)
|
||||||
self.assertEqual(fixed_date.month, 14)
|
self.assertEqual(fixed_date.month, 14)
|
||||||
self.assertEqual(fixed_date.day_of_month, 1)
|
self.assertEqual(fixed_date.day_of_month, 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user