Template talk:Age in days

Used
This is a useful template that should get more wider use. It is especially useful for lists counting title reigns. Alex43223Talk 00:34, 28 February 2007 (UTC)

Leap days?
Does it count leap days and other such calendar mysteries? --Brandon Dilbeck 01:47, 15 March 2007 (UTC)


 * Yes. It should uses the Template:Gregorian serial date which should that into account (according to that template-page). / AB-me ( chit-chat ) 17:32, 19 March 2007 (UTC)


 * Okay. Phew.  --Brandon Dilbeck 19:23, 19 March 2007 (UTC)

Sandbox
These two examples fail, because they do not name their arguments:
 * March 21, 2007 was 6310 days days ago.
 * May 24, 2007 was 6246 days days ago.

Try again with argument names:
 * March 21, 2007 was 8945 days days ago.
 * May 24, 2007 was 8945 days days ago.

Arguments
Why does this template even ask for arguments? Other similar templates like age do not. --Arctic Gnome (talk • contribs) 21:28, 7 August 2007 (UTC)

You mean argument names? I added the option of using unnamed parameters: Patrick 13:40, 18 August 2007 (UTC)
 * 335 days gives 335 days
 * 335 days gives 335 days
 * 335 days gives 335 days

Interwiki
Please add de:Vorlage:Tagesdifferenz .--Tilla2501 12:55, 18 August 2007 (UTC)

IW
Please add no:Mal:Alder i dager. Nsaa 21:14, 26 September 2007 (UTC)

Seperators
Could the template be modified to insert seperators into a search outcome (eg 3,258 rather than 3258)? -- GW_SimulationsUser Page 15:41, 22 October 2007 (UTC)

Documentation
Please use documentation. 16@r (talk) 03:02, 29 January 2008 (UTC)


 * ✅ Done - Nihiltres { t .l } 19:09, 30 January 2008 (UTC)

Make this sort better
Can any template-writers figure this puzzle out for me? In sortable tables, numbers will sometimes be sorted by digit rather than by number, making it look like 20 is bigger than 100. I want to make this template add an invisible zero using the template 0 to the beginning of two-digit numbers, and two invisible zeros to the beginning of one digit numbers. In practise this fixes the sortable tables, but making it work with this template would take me quite a while of figuring. I think it can be done by coding that if RESULT is < 10, then print "00RESULT" and if RESULT is < 100 then print "0RESULT". Another option to make it work with the tables is to somehow incorporate the template nts into it. Thanks --Arctic Gnome (talk • contribs) 05:36, 20 March 2008 (UTC)
 * In sandbox testing, just enclosing this template in nts seems to work. I was expecting (knock on wood) it to be much more complicated.  --Arctic Gnome (talk • contribs) 05:52, 20 March 2008 (UTC)

Women in the United States Senate
Hello, I created a table showing length of services for different Senators. The problem I have is that for currently serving Senators I used the template which is supposed to sort correctly, but it doesn't. Any ideas? Victor Victoria (talk) 01:21, 27 August 2010 (UTC)


 * You are right to use Template:Age in days nts instead of Template:Age in days. But because it adds hidden zeroes and treats commas specially, it needs to be used in all the cells for the relevant column. At the moment, it is only present for those senators still serving, so they are sorting at the end of the list. Also, the commas in the wikitext for those senators who have served more than 999 days are causing the numbers to be treated as text (so that, say, 120 sorts between 12 and 13). Using Age in days nts throughout will fix this too, because it hides the commas from the sorting script. — Richardguk (talk) 03:43, 27 August 2010 (UTC)
 * I guess this problem has no fix at the moment. The same problem exists in List of United States Supreme Court Justices by time in office. Victor Victoria (talk) 03:58, 27 August 2010 (UTC)


 * You seem to misunderstand me. The fix does exist: simply replace the number of days (for those senators no longer serving) with where month1/day1/year1 is the start date and month2/day2/year2 is the end date (you might possibly need to adjust day2 by 1 in each case, depending on whether the end date has been counted as well as the start date). Once every row is using Age in days nts in the "days" column, it will sort properly. The same fix will work for the table in the Supreme Court Justices article. — Richardguk (talk) 05:29, 27 August 2010 (UTC)
 * Thanks for your help — it worked just like you promised. I'll fix the List of United States Supreme Court Justices by time in office later when I get some time. Victor Victoria (talk) 12:26, 27 August 2010 (UTC)
 * Using Template:Age in days nts needlessly adds load time for senators that are retired. You can instead use the number in the simple Template:NTS.  —Arctic Gnome (talk • contribs) 20:51, 3 September 2010 (UTC)

Suggestion: handle BCE dates
Summary: extend this template to handle dates before Common Era.

Description: Gregorian serial date throws an error for BCE dates and so makes this template unusable if either of the two ends of the interval is BCE. As a side-effect, Age in years and days cannot handle BCE intervals and some (rare) intervals that span the BCE/CE boundary.

Suggestion: Use JULIANDAY if any of the two ends of the interval is BCE, Gregorian serial date otherwise (as currently). Specify BCE dates using astronomical year numbering. JULIANDAY, unlike JD, uses the proleptic Gregorian calendar, and is thus equivalent to Gregorian serial date for measuring time intervals.

Proposed new template: User:Miranche/Miranche Age in days.

Test cases: User:Miranche/Template Age in days testcases.

Thoughts? – MirancheT C 01:32, 4 February 2012 (UTC)

Module:Age
I created Module:Age to fix some problems reported with Age in years and months, then experimented by adding some code to implement Age in days and Gregorian serial date. I do not know if this template has any performance issues, but if wanted, it could be replaced with the module. More information is at Module talk:Age. Johnuniq (talk) 10:04, 2 April 2013 (UTC)

Inputting full dates
Code has been adjusted to allow for full dates to be input as parameters 1 and 2.
 * e.g.  → 8219 days

Jimp 08:44, 10 April 2015 (UTC)

Sorting
on will sort according to the number of seconds (using the SI unit for consistency across various template, e.g. val). This will make age in days nts redundant. Jimp 08:44, 10 April 2015 (UTC)

Formatting
The template did not format numbers correctly. Numbers were not delimited and negative numbers were output with a hyphen instead of a negative sign. This formatting is good if the number is to be used for further calculations; however it is bad for display in articles. Of course, for numbers between 0 and 999 inclusive, this is unimportant, but outside of this range, it's problematic. Two new formatting options have been added: commas will give true minus signs and add commas as per  and gaps will give true minus signs and add thin spaces as per  whilst raw will produce the unformatted numbers with hyphens for minus signs as has been used in the past. Note that for year, month and day input the default is still the  form (this template is used by others); however, for full-date input the default is   (the most commonly used formatting on WP). Jimp 08:44, 10 April 2015 (UTC)

Displaying the unit
Editors may not know whether the number of days will be one or not. How do you pluralise in this case? full sorts this out by giving "day" or "days" as appropriate. abbr gives an abbreviation, "d". The default is still not to give units. Jimp 08:44, 10 April 2015 (UTC)

Unexpected number error: spaces cause error message
Note that a space before the "2" (in the last parameter) causes an error. Whitespace should be trimmed. – Wbm1058 (talk) 23:20, 13 February 2016 (UTC)


 * 2560 days
 * 2560 days
 * 2560 days
 * 2560 days


 * Another example
 * 8355 days

I forgot why I'm watching this page so I looked above and found I wrote a module which I can barely remember, but according to my confident statements at Module talk:Age, the module is ready to replace this template, if wanted. Using the test "template"   instead of the above shows that it works for each of those, producing 4, 4, and −182. I'm busy elsewhere and it may be a few days before I get a chance to look at the module to work out its state, but it probably is ready. Johnuniq (talk) 01:24, 14 February 2016 (UTC)

Proposed generic template time interval
Thanks for your efforts. If your module is going to replace the date and age templates, what I'd like to see is a way to express durations between two time points at any level of precision, e.g. today I want to add the amount of time that a cargo supply mission has remained docked to the ISS but the age templates are limited to showing days; we need to show this with days + hours and minutes. Some other cases may need to compute years and months for long durations or months and days for shorter ones, and the only kludge we have here is age for infant which has arbitrary boundaries for the precision to display. There is a duration template but it only formats a given duration and it has been created with the special purpose of documenting lengths of music pieces. Ideally we would have something along the lines of your convert with relevant formatting options available and reasonable defaults for most-used cases. Example syntax I'd like: With this, I believe that all the current age-related templates could be rewritten as syntactic sugar based on the generic time interval, so we would have a painless transition from legacy syntax. Looking forward to your feedback + input from other editors. Let's get this done! — JFG talk 05:56, 13 May 2016 (UTC)
 * The good news is that Module:Date has the ability to parse the date/time examples above, and can easily supply date differences in years, months, days, hours, minutes, seconds, and can supply weeks as well. It's only limitation is that each date has to be fully specified, and valid. It works from 9999 BCE to 9999 CE and accepts varieties like 24-hour time or "am" or "a.m.", and "AD", "CE", etc. The less good news is that I'm busy on another project and am unlikely to return to this topic for a couple of weeks. The syntax above looks good and should be no problem. Johnuniq (talk) 07:33, 13 May 2016 (UTC)
 * Your new Module:Date looks like well-rounded code, thanks! I have just put together a first version of time interval to see how this could work; it uses a new Module:Time interval which invokes Module:Date in turn. You can see test cases at Template:Time interval/testcases. The module can only display time interval in years for now, I will extend it to the other cases when I have more time. The test case 1961 to 1999 renders nil, possibly because Module:Date doesn't interpret the "1961" raw string as a year; would you like to change this or should I handle it in the Time interval module? — JFG talk 13:37, 13 May 2016 (UTC)


 * Good progress. I just put what I've been working on in Module:Age/sandbox. That is Module:Age with modifications to use Module:Date. My energy went into Date, and Age is not ready for the light of day, but I thought I would post it to show my plans. I haven't really looked yet, but currently do not see why Module:Time interval is needed—why not just stick to Module:Age?
 * Re your question, here are my to do notes on that (this mentions hla = "how long ago"):

age.lua needs a way to handle partial (ambiguous/incomplete) dates. For, from_date can omit any component.

Perhaps change: get_dates(frame, want_mixture) get_dates(frame, want_mixture, want_partial) and have a parameter to Date to tell it that partial is ok, in which case it should return a simple table of form: { year = x, month = y, day = z, incomplete = true } where any or all components may be missing. If any specified components are invalid, return nil.

The simple table might be not-so-simple with a metatable to get the oldest or newest valid dates: oldest_date if year == nil, return nil if month == nil, month = 1 if day == nil, day = 1 return Date(year, month, day) newest_date if year == nil, return nil if month == nil, month = 12 if day == nil, day = days_in_month(year, month) return Date(year, month, day)

Partial dates are assumed to be Gregorian dates.
 * I'll need some quality time to think about that! Johnuniq (talk) 00:58, 14 May 2016 (UTC)
 * I see what you are trying to do. In my experience, fuzzy dates are required e.g. when we have the year and no date, or the minutes and no seconds. The "strange mixtures" you mention in the doc, e.g. having a year and a day but no month in between, are not worth supporting; they must be coming from limitations of the template processor and syntax, as I can't imagine a genuine need for guessing an intermediate value between a more precise and a less precise one. To cover most cases elegantly I would suggest associating a precision attribute to each Date object, so that calculations can always do the right thing. Example: a historic character was born in 1542 and died on December 12, 1598: the birth date has precision one year and the death date has precision one day; if we compute their difference to find his age at death, we can only state the lower precision, i.e. estimate his age to 56 years. The precision of a date also drives how it can be displayed (don't show any numbers which are below the precision, also think of "circa 1542"). This approach would solve one of my test cases computing the age of the Berlin Wall from 1961 to 1989 (because neither the start date nor the end date can be precisely assessed, however the years are well established): you need to parse "1961" as "year=1961, month=7, day=1, precision=year" (specifying the unknown date to July 1st so that calculations of time differences use the middle point of the year as reference). If you're feeling adventurous, I'd suggest intermediate precisions such as quarter or decade so we can parse "Q3, 2009" and "1970s", but let's start by getting the simple years right! — JFG talk 05:29, 16 May 2016 (UTC)


 * I'm extremely happy to see this being worked on, for space mission duration uses that JFG mentions, and wonder when Module:Date will be ready for release. John, just out of curiosity, what is the reason for a Date template and Age template? And I agree, there seems no reason to have a separate Time Interval template if Date will perform the same function. — Huntster (t @ c) 03:12, 16 May 2016 (UTC)
 * I wrote Module:Age to fix a problem with a template that someone requested. Later I noticed other reports of minor issues with other templates, and decided to write Module:Date to hold all the date functions, and then replace Module:Age with code to implement the various templates. Module:Age/sandbox is where I'm up to, while Module:Date is pretty well finished. I say "pretty well" because I may add features needed to conveniently have Module:Age handle a variety of templates. In summary: Module:Date will never be directly used by a template, while Module:Age will handle templates and will use Module:Date to do the date calculations. Module:Date has been extensively tested, while Module:Age remains on my to do list. Johnuniq (talk) 03:31, 16 May 2016 (UTC)
 * Thanks for that. Well, just know that people are excited at the prospect of a unified date handling template. I plan to deploy the finished product across a very wide variety of spaceflight articles to replace the various "Age in..." templates when it becomes available, especially for the ISS missions since hours and minutes will be available (wooohooo!). — Huntster (t @ c) 04:10, 16 May 2016 (UTC)


 * Glad you like it, ! Now we need to agree on syntax and packaging. As explained, Module:Date is a collection of date parsing, calculation and regurgitation features, not intended for direct use. Then there is the new Module:Age which is designed to emulate all the legacy age templates for backward compatibility. Then Module:Time interval intends to provide easier and more generic date calculation and formatting. Both Age and Time interval are works in progress, so we might decide to merge them and keep only one. However I would argue that psychologically Age is biased towards living beings and long durations whereas Time interval can apply to shorter periods and abstract ideas (duration of a spacewalk, period of a comet, length of an era, …). Of course a single module could provide many methods to cover all bases. I have suggested some syntax for {t|time interval}} and started implementing it. The main difference I see between the Age and Time interval concepts now is that Age is geared towards dates provided with 3 separate parameters as in   whereas Time interval works with full dates, either in literal   or ISO   format. When we add time to the mix, parameter passing becomes unwieldy and I'm convinced that most editors would prefer typing literal dates in natural format, including hours and minutes if needed, rather than split everything with pipe characters; the encyclopedia would be easier to maintain. (A simple example that bugs me everyday, as of doesn't accept natural dates, which are exactly what we want in the text where this template gets used.) — JFG talk 05:29, 16 May 2016 (UTC)
 * Can't wait to get rid of such horrors, although amazingly they do the job! — JFG talk 05:58, 16 May 2016 (UTC)

Please see Template talk:Time interval for a demonstration of the new system which achieves most of the above. Johnuniq (talk) 10:51, 6 June 2016 (UTC)

Module:Age tests
I'm trying to increase the consistency of some of the age templates by using Module:Age. The main motivation is so sorting with the nts templates such as age in days nts will be consistent with other age templates such as age in years nts.

A preliminary test is at Template:Age in days/testcases2 which uses the tests from Template:Age in days/testcases but uses a system that can automatically check the results. age in days/sandbox uses the module and its results are compared with those from age in days at Template talk:Age in days/testcases2. Currently that is showing hundreds of fails due to differences in the wikitext produced. I can't see any substantive differences and will investigate it further. I'm putting this note here for anyone interested but also as a reminder to myself about where I put the tests. Johnuniq (talk) 10:04, 30 December 2017 (UTC)
 * After doing some search-and-replace changes to the tests for expected differences, the test results show that age in days/sandbox agrees with age in days. Johnuniq (talk) 04:43, 2 January 2018 (UTC)

Something is wrong
Should  give  ? That's what it's currently giving. Uglemat (talk) 09:42, 22 February 2018 (UTC)
 * Hmm, so it does:
 * I included age in days/sandbox to show that it works correctly. The sandbox template uses Module:Age and I need to do some more checking before switching the main template to use the sandbox code. The main problem with such a change is that the module gives an error if dates are not valid. That is good, but it might mean that several errors occur in articles until they are cleaned. I guess you could use the sandbox where needed and it could be changed back to the main template in due course. Johnuniq (talk) 09:51, 22 February 2018 (UTC)
 * I just noticed the previous section. Apparently I thought the sandbox was good to go in early January. I'll think about it soon. Johnuniq (talk) 09:52, 22 February 2018 (UTC)
 * The problem was due to some vandalism at Template:Age in days/sec which I reverted, so it is good now. However, I am planning to use the module soon. Johnuniq (talk) 09:41, 23 February 2018 (UTC)
 * I just noticed the previous section. Apparently I thought the sandbox was good to go in early January. I'll think about it soon. Johnuniq (talk) 09:52, 22 February 2018 (UTC)
 * The problem was due to some vandalism at Template:Age in days/sec which I reverted, so it is good now. However, I am planning to use the module soon. Johnuniq (talk) 09:41, 23 February 2018 (UTC)

Calculation Problem
We need a template to be able to count days which includes the first day as day one for when calculating lifespans because calculating the days between the 2 dates ignores that first day, a persons birthday is not the last day of the year it is the first day of his next year, a person born on January 1st hits his 365th day of life on December 31 not on the next January 1st. SCAH (talk) 17:20, 22 March 2019 (UTC)
 * Suppose someone was born at 12 noon on Monday 1 January 2018. At 12 noon on Thursday 4 January 2018, they were exactly three days old. Consider:
 * → 8576 days
 * → 8576 days
 * The duration option is for scenarios such as a conference which started at 9:00 am on 1 January 2018 and finished at 5:00 pm on 4 January 2018. In that case, the final day is counted which adds 1. Johnuniq (talk) 23:20, 22 March 2019 (UTC)
 * The duration option is for scenarios such as a conference which started at 9:00 am on 1 January 2018 and finished at 5:00 pm on 4 January 2018. In that case, the final day is counted which adds 1. Johnuniq (talk) 23:20, 22 March 2019 (UTC)

TPER — Add TfD notice
I have nominated this template for merging with Template:Date difference. Please add the following text to the top of the template: Date difference --67.183.136.85 (talk) 21:25, 25 December 2021 (UTC)
 * ✅ User:GKFXtalk 21:31, 25 December 2021 (UTC)

Option to display in text?
Would it be possible to add a variable that sets the template to display the days in text instead of numbers. E.g. fourteen days rather than 14 days. Krisgabwoosh (talk) 09:07, 23 February 2022 (UTC)
 * Use number to word for that:
 * → 8565 days
 * → days
 * Johnuniq (talk) 09:26, 23 February 2022 (UTC)

Time zones feature probably broken
The time zones feature is now probably broken. Even the provided example failed when I tried to test it. So consider this a bug report. With best wishes, RobbieIanMorrison (talk) 08:42, 13 May 2024 (UTC)
 * Thanks for the report. I have updated the documentation to remove items that applied to the old template, but which have not applied since April 2018 when the template was switched to use Module:Age. The feature of adding a timezone offset was not used and is no longer supported. Johnuniq (talk) 10:06, 13 May 2024 (UTC)