Computational Essay
Sample Content
▼
Open Guidelines
Tools
Check
Publish to Cloud
Submit to Notebook Archive

Comparing date addition and subtraction

PeterCullenBurbery
I aim to compare date addition methods such as roll over, roll forward.
In 13.1 DatePlus and DateDifference were given a new method option for how computations should be made.
My birthday was at Cabell-Huntington hospital in Huntington West Virginia at 11:45 pm. I would like to think that it was 11:45:45pm to the second, so I'll go with that. The date was 18 February 2002 in the cold winter.
I will analyze dates with my birthday.
In[]:=
$birthday=DateObject"18 February 2002 11:45:45 pm",CalendarType->"Gregorian",DateFormat->"LocaleDateTimeFull",TimeZone->
Huntington
CITY

Out[]=
Monday, February 18, 2002 at 10:45:45 PMEST
I'm not sure why the date doesn't display 11:45:45 but it probably has something to do with daylight savings time.
In[]:=
$18thbirthday=DatePlus[$birthday,{18,"Year"}]
Out[]=
Tuesday, February 18, 2020 at 10:45:45 PMEST
In[]:=
different18thbirthdays=AssociationMap[DatePlus[$birthday,{18,"Year"},Method->#]&,{"Continuous","RollForward","RollBackward","RollOver"}]
Out[]=
Continuous
Friday, February 14, 2020 at 10:45:45 PMEST
,RollForward
Tuesday, February 18, 2020 at 10:45:45 PMEST
,RollBackward
Tuesday, February 18, 2020 at 10:45:45 PMEST
,RollOver
Tuesday, February 18, 2020 at 10:45:45 PMEST

I want to check if the values are all different.
In[]:=
DuplicateFreeQ[different18thbirthdays]
Out[]=
False
Let's delete the duplicates:
In[]:=
DeleteDuplicates[different18thbirthdays]
Out[]=
Continuous
Friday, February 14, 2020 at 10:45:45 PMEST
,RollForward
Tuesday, February 18, 2020 at 10:45:45 PMEST

I think its interesting that if my 18th birthday was implemented with continuous time, I would have turned 18 on 14 February 2002.
Analyze the date difference:
In[]:=
DateDifference@@Values[DeleteDuplicates[different18thbirthdays]]
Out[]=
4
days
Make a table of my birthdays:
In[]:=
myBirthdays=AssociationMap[yearAssociationMap[DatePlus[$birthday,{year,"Year"},Method->#]&,{"Continuous","RollForward","RollBackward","RollOver"}],Range[20]]
Out[]=
In[]:=
Dataset[AssociationMap[yearAssociationMap[DatePlus[$birthday,{year,"Year"},Method->#]&,{"Continuous","RollForward","RollBackward","RollOver"}],Range[20]]]
Out[]=
Continuous
RollForward
RollBackward
RollOver
1
Tuesday, February 18, 2003 at 10:45:45 PM
Tuesday, February 18, 2003 at 10:45:45 PM
Tuesday, February 18, 2003 at 10:45:45 PM
Tuesday, February 18, 2003 at 10:45:45 PM
2
Wednesday, February 18, 2004 at 10:45:45 PM
Wednesday, February 18, 2004 at 10:45:45 PM
Wednesday, February 18, 2004 at 10:45:45 PM
Wednesday, February 18, 2004 at 10:45:45 PM
3
Thursday, February 17, 2005 at 10:45:45 PM
Friday, February 18, 2005 at 10:45:45 PM
Friday, February 18, 2005 at 10:45:45 PM
Friday, February 18, 2005 at 10:45:45 PM
4
Friday, February 17, 2006 at 10:45:45 PM
Saturday, February 18, 2006 at 10:45:45 PM
Saturday, February 18, 2006 at 10:45:45 PM
Saturday, February 18, 2006 at 10:45:45 PM
5
Saturday, February 17, 2007 at 10:45:45 PM
Sunday, February 18, 2007 at 10:45:45 PM
Sunday, February 18, 2007 at 10:45:45 PM
Sunday, February 18, 2007 at 10:45:45 PM
6
Sunday, February 17, 2008 at 10:45:45 PM
Monday, February 18, 2008 at 10:45:45 PM
Monday, February 18, 2008 at 10:45:45 PM
Monday, February 18, 2008 at 10:45:45 PM
7
Monday, February 16, 2009 at 10:45:45 PM
Wednesday, February 18, 2009 at 10:45:45 PM
Wednesday, February 18, 2009 at 10:45:45 PM
Wednesday, February 18, 2009 at 10:45:45 PM
8
Tuesday, February 16, 2010 at 10:45:45 PM
Thursday, February 18, 2010 at 10:45:45 PM
Thursday, February 18, 2010 at 10:45:45 PM
Thursday, February 18, 2010 at 10:45:45 PM
9
Wednesday, February 16, 2011 at 10:45:45 PM
Friday, February 18, 2011 at 10:45:45 PM
Friday, February 18, 2011 at 10:45:45 PM
Friday, February 18, 2011 at 10:45:45 PM
10
Thursday, February 16, 2012 at 10:45:45 PM
Saturday, February 18, 2012 at 10:45:45 PM
Saturday, February 18, 2012 at 10:45:45 PM
Saturday, February 18, 2012 at 10:45:45 PM
11
Friday, February 15, 2013 at 10:45:45 PM
Monday, February 18, 2013 at 10:45:45 PM
Monday, February 18, 2013 at 10:45:45 PM
Monday, February 18, 2013 at 10:45:45 PM
12
Saturday, February 15, 2014 at 10:45:45 PM
Tuesday, February 18, 2014 at 10:45:45 PM
Tuesday, February 18, 2014 at 10:45:45 PM
Tuesday, February 18, 2014 at 10:45:45 PM
13
Sunday, February 15, 2015 at 10:45:45 PM
Wednesday, February 18, 2015 at 10:45:45 PM
Wednesday, February 18, 2015 at 10:45:45 PM
Wednesday, February 18, 2015 at 10:45:45 PM
14
Monday, February 15, 2016 at 10:45:45 PM
Thursday, February 18, 2016 at 10:45:45 PM
Thursday, February 18, 2016 at 10:45:45 PM
Thursday, February 18, 2016 at 10:45:45 PM
15
Tuesday, February 14, 2017 at 10:45:45 PM
Saturday, February 18, 2017 at 10:45:45 PM
Saturday, February 18, 2017 at 10:45:45 PM
Saturday, February 18, 2017 at 10:45:45 PM
16
Wednesday, February 14, 2018 at 10:45:45 PM
Sunday, February 18, 2018 at 10:45:45 PM
Sunday, February 18, 2018 at 10:45:45 PM
Sunday, February 18, 2018 at 10:45:45 PM
17
Thursday, February 14, 2019 at 10:45:45 PM
Monday, February 18, 2019 at 10:45:45 PM
Monday, February 18, 2019 at 10:45:45 PM
Monday, February 18, 2019 at 10:45:45 PM
18
Friday, February 14, 2020 at 10:45:45 PM
Tuesday, February 18, 2020 at 10:45:45 PM
Tuesday, February 18, 2020 at 10:45:45 PM
Tuesday, February 18, 2020 at 10:45:45 PM
19
Saturday, February 13, 2021 at 10:45:45 PM
Thursday, February 18, 2021 at 10:45:45 PM
Thursday, February 18, 2021 at 10:45:45 PM
Thursday, February 18, 2021 at 10:45:45 PM
20
Sunday, February 13, 2022 at 10:45:45 PM
Friday, February 18, 2022 at 10:45:45 PM
Friday, February 18, 2022 at 10:45:45 PM
Friday, February 18, 2022 at 10:45:45 PM
In[]:=
DeleteDuplicates/@myBirthdays
Out[]=
1Continuous
Tuesday, February 18, 2003 at 10:45:45 PMEST
,2Continuous
Wednesday, February 18, 2004 at 10:45:45 PMEST
,3Continuous
Thursday, February 17, 2005 at 10:45:45 PMEST
,RollForward
Friday, February 18, 2005 at 10:45:45 PMEST
,4Continuous
Friday, February 17, 2006 at 10:45:45 PMEST
,RollForward
Saturday, February 18, 2006 at 10:45:45 PMEST
,5Continuous
Saturday, February 17, 2007 at 10:45:45 PMEST
,RollForward
Sunday, February 18, 2007 at 10:45:45 PMEST
,6Continuous
Sunday, February 17, 2008 at 10:45:45 PMEST
,RollForward
Monday, February 18, 2008 at 10:45:45 PMEST
,7Continuous
Monday, February 16, 2009 at 10:45:45 PMEST
,RollForward
Wednesday, February 18, 2009 at 10:45:45 PMEST
,8Continuous
Tuesday, February 16, 2010 at 10:45:45 PMEST
,RollForward
Thursday, February 18, 2010 at 10:45:45 PMEST
,9Continuous
Wednesday, February 16, 2011 at 10:45:45 PMEST
,RollForward
Friday, February 18, 2011 at 10:45:45 PMEST
,10Continuous
Thursday, February 16, 2012 at 10:45:45 PMEST
,RollForward
Saturday, February 18, 2012 at 10:45:45 PMEST
,11Continuous
Friday, February 15, 2013 at 10:45:45 PMEST
,RollForward
Monday, February 18, 2013 at 10:45:45 PMEST
,12Continuous
Saturday, February 15, 2014 at 10:45:45 PMEST
,RollForward
Tuesday, February 18, 2014 at 10:45:45 PMEST
,13Continuous
Sunday, February 15, 2015 at 10:45:45 PMEST
,RollForward
Wednesday, February 18, 2015 at 10:45:45 PMEST
,14Continuous
Monday, February 15, 2016 at 10:45:45 PMEST
,RollForward
Thursday, February 18, 2016 at 10:45:45 PMEST
,15Continuous
Tuesday, February 14, 2017 at 10:45:45 PMEST
,RollForward
Saturday, February 18, 2017 at 10:45:45 PMEST
,16Continuous
Wednesday, February 14, 2018 at 10:45:45 PMEST
,RollForward
Sunday, February 18, 2018 at 10:45:45 PMEST
,17Continuous
Thursday, February 14, 2019 at 10:45:45 PMEST
,RollForward
Monday, February 18, 2019 at 10:45:45 PMEST
,18Continuous
Friday, February 14, 2020 at 10:45:45 PMEST
,RollForward
Tuesday, February 18, 2020 at 10:45:45 PMEST
,19Continuous
Saturday, February 13, 2021 at 10:45:45 PMEST
,RollForward
Thursday, February 18, 2021 at 10:45:45 PMEST
,20Continuous
Sunday, February 13, 2022 at 10:45:45 PMEST
,RollForward
Friday, February 18, 2022 at 10:45:45 PMEST

Analyze the differences between continuous and roll forward. Which
First sort by length because the first years have only one element each, then by the difference between the dates:
In[]:=
ReverseSortBy[{Length,Now}][DeleteDuplicates/@myBirthdays]
Out[]=
20Continuous
Sunday, February 13, 2022 at 10:45:45 PMEST
,RollForward
Friday, February 18, 2022 at 10:45:45 PMEST
,19Continuous
Saturday, February 13, 2021 at 10:45:45 PMEST
,RollForward
Thursday, February 18, 2021 at 10:45:45 PMEST
,18Continuous
Friday, February 14, 2020 at 10:45:45 PMEST
,RollForward
Tuesday, February 18, 2020 at 10:45:45 PMEST
,17Continuous
Thursday, February 14, 2019 at 10:45:45 PMEST
,RollForward
Monday, February 18, 2019 at 10:45:45 PMEST
,16Continuous
Wednesday, February 14, 2018 at 10:45:45 PMEST
,RollForward
Sunday, February 18, 2018 at 10:45:45 PMEST
,15Continuous
Tuesday, February 14, 2017 at 10:45:45 PMEST
,RollForward
Saturday, February 18, 2017 at 10:45:45 PMEST
,14Continuous
Monday, February 15, 2016 at 10:45:45 PMEST
,RollForward
Thursday, February 18, 2016 at 10:45:45 PMEST
,13Continuous
Sunday, February 15, 2015 at 10:45:45 PMEST
,RollForward
Wednesday, February 18, 2015 at 10:45:45 PMEST
,12Continuous
Saturday, February 15, 2014 at 10:45:45 PMEST
,RollForward
Tuesday, February 18, 2014 at 10:45:45 PMEST
,11Continuous
Friday, February 15, 2013 at 10:45:45 PMEST
,RollForward
Monday, February 18, 2013 at 10:45:45 PMEST
,10Continuous
Thursday, February 16, 2012 at 10:45:45 PMEST
,RollForward
Saturday, February 18, 2012 at 10:45:45 PMEST
,9Continuous
Wednesday, February 16, 2011 at 10:45:45 PMEST
,RollForward
Friday, February 18, 2011 at 10:45:45 PMEST
,8Continuous
Tuesday, February 16, 2010 at 10:45:45 PMEST
,RollForward
Thursday, February 18, 2010 at 10:45:45 PMEST
,7Continuous
Monday, February 16, 2009 at 10:45:45 PMEST
,RollForward
Wednesday, February 18, 2009 at 10:45:45 PMEST
,6Continuous
Sunday, February 17, 2008 at 10:45:45 PMEST
,RollForward
Monday, February 18, 2008 at 10:45:45 PMEST
,5Continuous
Saturday, February 17, 2007 at 10:45:45 PMEST
,RollForward
Sunday, February 18, 2007 at 10:45:45 PMEST
,4Continuous
Friday, February 17, 2006 at 10:45:45 PMEST
,RollForward
Saturday, February 18, 2006 at 10:45:45 PMEST
,3Continuous
Thursday, February 17, 2005 at 10:45:45 PMEST
,RollForward
Friday, February 18, 2005 at 10:45:45 PMEST
,2Continuous
Wednesday, February 18, 2004 at 10:45:45 PMEST
,1Continuous
Tuesday, February 18, 2003 at 10:45:45 PMEST

In[]:=
Differences@*Values@*DeleteDuplicates/@myBirthdays
Out[]=
1{},2{},3
1
day
,4
1
day
,5
1
day
,6
1
day
,7
2
days
,8
2
days
,9
2
days
,10
2
days
,11
3
days
,12
3
days
,13
3
days
,14
3
days
,15
4
days
,16
4
days
,17
4
days
,18
4
days
,19
5
days
,20
5
days

DeleteCases[Differences@*Values@*DeleteDuplicates/@myBirthdays,{}]
Out[]=
3
1
day
,4
1
day
,5
1
day
,6
1
day
,7
2
days
,8
2
days
,9
2
days
,10
2
days
,11
3
days
,12
3
days
,13
3
days
,14
3
days
,15
4
days
,16
4
days
,17
4
days
,18
4
days
,19
5
days
,20
5
days

Now I can map first over the association.
In[]:=
First/@DeleteCases[Differences@*Values@*DeleteDuplicates/@myBirthdays,{}]
Out[]=
3
1
day
,4
1
day
,5
1
day
,6
1
day
,7
2
days
,8
2
days
,9
2
days
,10
2
days
,11
3
days
,12
3
days
,13
3
days
,14
3
days
,15
4
days
,16
4
days
,17
4
days
,18
4
days
,19
5
days
,20
5
days

I think it looks like every four years a difference of one happens based on the ListPlot.
Make a function for my age:
Delete duplicates.
It seems there is a difference in the methods, but its the computer's evaluation not the methods:
I want to compare some large times so I'm going to add the age of the Earth.
The age of the Earth is not known to enough precision to be interesting.
Time is bounded from below with the planck time:
See all the digits:
See my age in the planck time:
Make a short quiz on which units are used to express the age of the Earth: