Ftime
Testing the MarkupExpression ftime
Testing the MarkupExpression ftime
Today is 2026-05-01 Fri in PmWikiland where its is 20:18:27
{(ftime %F -7days)}
{(ftime %F when="2007-08-14 -1days")}
{(ftime %F when="2007-08-14 -1 days")}
{(ftime %F when="2007-08-14 -1 day")}
{(ftime %F "2007-04-11 -4 days")}
{(ftime %F when="2007-01-24 +1 day")}
{(ftime %F when="2007-01-24 +1day")}
{(ftime %F "+1 day")} ?today +1 use quotes
{(ftime %F +1day)} ?today +1
| 2026-04-24 2007-08-13 2007-08-13 2007-08-13 2007-04-07 2007-01-25 2007-01-25 2026-05-02 ?today +1 use quotes 2026-05-02 ?today +1 |
{(ftime when=" ")}
{(ftime %s)}
{(ftime %s " ")}
{(ftime %s when="")}
{(ftime fmt=%F when="2007-08-14 -1days")}
| December 31, 1969, at 11:59 PM 1777666707 -1 -1 2007-08-13 |
{(ftime News-20070501)}
| May 01, 2007, at 12:00 AM |
{(ftime MarchingOrders2007)}
| May 01, 2026, at 08:18 PM |
{(ftime 1177600111)}
| May 01, 2026, at 08:18 PM |
{(ftime %s)}
| 1777666707 |
{(ftime @1177600111)}
| April 26, 2007, at 03:08 PM |
{(ftime fmt="%b %#d %Y" when="second mon of Jan")}
{(ftime fmt="%b %#d %Y" when="second tue of Feb")}
{(ftime fmt="%b %#d %Y" when="second wed of Mar")}
{(ftime fmt="%b %e %Y" when="second thu of Apr")}
{(ftime fmt="%b %e %Y" when="second fri of May")}
{(ftime fmt="%b %e %Y" when="second sat of Jun")}
{(ftime fmt="%b %e %Y" when="third sun of Jul")}
{(ftime fmt="%b %e %Y" when="fourth mon of Aug")}
{(ftime fmt="%b %e %Y" when="first tue of Sep")}
{(ftime fmt="%b %e %Y" when="second wed of Oct")}
{(ftime fmt="%b %e %Y" when="third thu of Nov")}
{(ftime fmt="%b %e %Y" when="first wed of Dec")}
----
{(ftime fmt="%b %e %Y" when="second Monday of January")}
{(ftime fmt="%b %e %Y" when="second Tuesday of February")}
...
{(ftime fmt="%b %e %Y" when="first Wednesday of December")}
| Jan 12 2026 Feb 10 2026 Mar 11 2026 Apr 9 2026 May 8 2026 Jun 13 2026 Jul 19 2026 Aug 24 2026 Sep 1 2026 Oct 14 2026 Nov 19 2026 Dec 2 2026 Jan 12 2026 Feb 10 2026 ... Dec 2 2026 |
All these work on my own server, with or without the changes in DRange() for 2.2.69. --Petko October 19, 2014, at 06:12 AM
Testing relative GNU date input formats
Today is 2026-05-01 Fri
{(ftime "%Y %b %d %a" "1 mon")}
{(ftime "%Y %b %d %a" "2 tue")}
{(ftime "%Y %b %d %a" "3 wed")}
{(ftime "%Y %b %d %a" "4 thu")} ?
{(ftime "%Y %b %d %a" "1 sat")}
{(ftime "%Y %b %d %a" "2 sat")}
{(ftime "%Y %b %d %a" "3 sat")}
{(ftime "%Y %b %d %a" "4 sat")}
{(ftime "%Y %b %d %a" "tuesday")}
{(ftime "%Y %b %d %a" "last tue")}
{(ftime "%Y %b %d %a" "this tue")}
{(ftime "%Y %b %d %a" "next tue")} ?
{(ftime "%Y %b %d %a" "thursday")}
{(ftime "%Y %b %d %a" "last week")}
{(ftime "%Y %b %d %a" "this week")}
{(ftime "%Y %b %d %a" "next week")}
| 2026 May 04 Mon 2026 May 12 Tue 2026 May 20 Wed 2026 May 28 Thu ? 2026 May 02 Sat 2026 May 09 Sat 2026 May 16 Sat 2026 May 23 Sat 2026 May 05 Tue 2026 Apr 28 Tue 2026 May 05 Tue 2026 May 05 Tue ? 2026 May 07 Thu 2026 Apr 20 Mon 2026 Apr 27 Mon 2026 May 04 Mon |
All the above are correct; "4 thu" means "Thursday the fourth week", knowing that "next Thursday" is "this Thursday" or "Thursday the first week". --Petko
{(ftime "%Y %b %d %a" "last month")} ?
{(ftime "%Y %b %d %a" "this month")}
{(ftime "%Y %b %d %a" "next month")}
{(ftime "%Y %b %d %a" "June")} ?
{(ftime "%Y %b %d %a" "last June")} ?
{(ftime "%Y %b %d %a" "this June")} ?
{(ftime "%Y %b %d %a" "next June")} ?
{(ftime "%Y %b %d %a" "last Aug")} ?
{(ftime "%Y %b %d %a" "this Aug")} ?
{(ftime "%Y %b %d %a" "next Aug")} ?
{(ftime "%Y %b %d %a" "October")} ?
{(ftime "%Y %b %d %a" "last Oct")} ?
{(ftime "%Y %b %d %a" "this Oct")} ?
{(ftime "%Y %b %d %a" "next Oct")} ?
{(ftime "%Y %b %d %a" "last year")}
{(ftime "%Y %b %d %a" "this year")}
{(ftime "%Y %b %d %a" "next year")}
| 2026 Apr 01 Wed ? 2026 May 01 Fri 2026 Jun 01 Mon 2026 Jun 01 Mon ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 Oct 01 Thu ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2025 May 01 Thu 2026 May 01 Fri 2027 May 01 Sat |
{(ftime "%Y %b %d %a" "3 wed")}
{(ftime "%Y %b %d %a" "wed 3")} ?
{(ftime "%Y %b %d %a" "3 wed aug")} ?
{(ftime "%Y %b %d %a" "aug 3 wed")} ?
{(ftime "%Y %b %d %a" "aug wed 3")} ?
{(ftime "%Y %b %d %a" "3 wed this aug")} ?
{(ftime "%Y %b %d %a" "this aug 3 wed")} ?
{(ftime "%Y %b %d %a" "3 wed aug this year")} ?
{(ftime "%Y %b %d %a" "aug this year 3 wed")} ?
{(ftime "%Y %b %d %a" "this year aug 3 wed")} ?
{(ftime "%Y %b %d %a" "this year aug wed 3")} ?
| 2026 May 20 Wed 2026 May 01 Fri ? 2026 Aug 19 Wed ? 2026 Aug 05 Wed ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 May 01 Fri ? 2026 Aug 19 Wed ? 2026 Aug 19 Wed ? 2026 Aug 05 Wed ? 2026 May 01 Fri ? |
If something is unsatisfactory with relative dates, the reason is the strtotime function in PHP, not PmWiki which uses the date this function recognizes and returns. See also Relative formats on which relative dates are recognized, for example "this/last/next Aug" is not among the ones that are expected to be recognized. --Petko October 19, 2014, at 06:08 AM
{(ftime %o)}
{(ftime "%o")}
{(ftime "%Y %b %d%o %a")}
| st st 2026 May 01st Fri |
{(ftime "%L")}
{(ftime "%L" "-4minutes")}
{(ftime "%L" "-4hours")}
{(ftime "%L" "-4days")}
{(ftime "%L" "-4months")}
{(ftime "%L" "-4years")}
{(ftime "%L" "2022-09-25")}
{(ftime "%L" "-9months")}
{(ftime "%L" "-10months")}
{(ftime "%L" "-11months")}
{(ftime "%L" "-12months")}
A stamp in the future is unexpected,\\
we should handle it better:
{(ftime "%L" "+6days")}
{(ftime "%L" "+6months")} (±DST)
| A stamp in the future is unexpected, (±DST) |