THIS IS PRERELEASE SOFTWARE - CREATE ISSES ON GITHUB!!!

date roll

dateroll makes working with πŸ“… dates less painful.

what's it for

  • ++ and βˆ’- dates and time periods
  • πŸŽ‰ dealing with holidays
  • computing πŸ’Έ payments and πŸͺ™ accruals
  • handling 🎫 stubs

πŸ”₯rapid start

$ pip install dateroll
$ python
>>> from dateroll import ddh
>>> ddh("t+2bd")

πŸš€ use

ddh (date-duration-helper) is your πŸͺ„ magic wand for πŸ“… dates.

category input output
Date ddh('t') (t is today)
ddh('5/5/5')
ddh('2024-02-15')
Date(2024,2,19)
Date(2005,5,5)
Date(2024,2,15)
Duration ddh('1d')
ddh('1m')
ddh('1y')
ddh('1d|NY')
ddh('1d|NY/MF')
ddh('1d|NYuLN')
Duration(d=1)
Duration(m=1)
Duration(y=1)
Duration(d=1,cal='NY')
Duration(d=1,cal='NY', roll='MF')
Duration(d=1, cal={'NY', 'LN'}, roll='MF)
Schedule ddh('t, 6m, 20')
ddh('t, t+5y ,6m')
Schedule(start='2/19/24', step='6m', n=20)
Schedule(start='2/20/24', stop='2/20/29, step='6m')

What are the types/objects?

from dateroll import Date, Duration, Schedule
in dateroll Example python native equivalent
Date ddd('7/2/84')
A date
datetime.date
datetime.datetime
Duration ddh('1y'), or ddh('1m')
A Duration
datetime.timedelta
dateutil.relativedelta.relativedelta
Schedule ddh('1/15/2024,1m,60)
Payment dates
dateutil.rrule.rrule

let's add

left side operation right side output
Date ++ Duration Date
Duration ++ Duration Duration
>>> d = ddh('2/16/22') # a friday before presidents day
>>> d + '1bd|NY'# see calendars section later
Date(2022,2,20)
>>> ddh(')

let's subtract

left side operation right side output
Date βˆ’- Date Duration
Date βˆ’- Duration Date
>>> t1 = ddh('1/5/24')
>>> t2 = ddh('2/6/24')
>>> t2-t1
Duration(start='1/5/24',stop='2/5/24')
method description
Duration.approx approximate largest duration
Duration.exact Duration of days only
Duration.ncd int of calendar days
Duration.nbd int of working days (if cal provided on t1)
>>> (t2-t1).approx

>>> (t2-t1).exact

>>> (t2-t1).ncd # WE cal is explicit

>>> (t2-t1).ncd('NY')

>>> (t2-t1).nbd

Much more in the reference docs.

Happy rolling!

  • The Disent Team