Nice. Also, your quip about not revealing your age made me realize the code should include some data validation for time! Here’s a working template.
Time between two dates
Conditions
earlierDateandlaterDateare date-without-time valuesearlierDatecomes beforelaterDate- includes a check just in case
Code
if(laterDate < earlierDate, "time travel!", if(laterDate == earlierDate, "same day",
[
(laterDate - earlierDate).years.floor() + " years",
(laterDate - (earlierDate + duration((laterDate - earlierDate).years.floor() + "y"))).months.floor() + " months",
(laterDate - (earlierDate + duration((laterDate - earlierDate).years.floor() + "y") + duration((laterDate - (earlierDate + duration((laterDate - earlierDate).years.floor() + "y"))).months.floor() + "M"))).days.floor() + " days"
].filter(value.slice(0,1) > 0).join(", ")
))
Adaptations
datetime values
- when the values include time
Append .date() as needed.
timeSince (age)
- when
laterDateis set totoday() - e.g., for calculating time since a past event
Replace the first pseudo-line with:
if(today() < earlierDate, "you traveled to the future to do this", if(today() == earlierDate, "today",
timeTill (countdown)
- when
earlierDateis set totoday() - e.g., for calculating time until a future event
Replace the first pseudo-line with:
if(laterDate < today(), "this event has passed", if(laterDate == today(), "today",