Ftime
  Testing the MarkupExpression ftime   
Testing the MarkupExpression ftime
Today is 2025-10-31 Fri in PmWikiland where its is 13:22:48
|  {(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
 | 2025-10-24 2007-08-13 2007-08-13 2007-08-13 2007-04-07 2007-01-25 2007-01-25 2025-11-01 ?today +1 use quotes 2025-11-01 ?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 1761916968 -1 -1 2007-08-13 | 
|  {(ftime News-20070501)}
 | May 01, 2007, at 12:00 AM | 
|  {(ftime MarchingOrders2007)}
 | October 31, 2025, at 01:22 PM | 
|  {(ftime 1177600111)}
 | October 31, 2025, at 01:22 PM | 
|  {(ftime %s)}
 | 1761916968 | 
|  {(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 13 2025 Feb 11 2025 Mar 12 2025 Apr 10 2025 May 9 2025 Jun 14 2025 Jul 20 2025 Aug 25 2025 Sep 2 2025 Oct 8 2025 Nov 20 2025 Dec 3 2025 Jan 13 2025 Feb 11 2025 ... Dec 3 2025 | 
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 2025-10-31 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")}
 | 2025 Nov 03 Mon 2025 Nov 11 Tue 2025 Nov 19 Wed 2025 Nov 27 Thu ? 2025 Nov 01 Sat 2025 Nov 08 Sat 2025 Nov 15 Sat 2025 Nov 22 Sat 2025 Nov 04 Tue 2025 Oct 28 Tue 2025 Nov 04 Tue 2025 Nov 04 Tue ? 2025 Nov 06 Thu 2025 Oct 20 Mon 2025 Oct 27 Mon 2025 Nov 03 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")}
 | 2025 Oct 01 Wed ? 2025 Oct 31 Fri 2025 Dec 01 Mon 2025 Jul 01 Tue ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2024 Oct 31 Thu 2025 Oct 31 Fri 2026 Oct 31 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")} ?
 | 2025 Nov 19 Wed 2025 Oct 31 Fri ? 2025 Sep 17 Wed ? 2025 Aug 06 Wed ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Oct 31 Fri ? 2025 Sep 17 Wed ? 2025 Sep 17 Wed ? 2025 Aug 06 Wed ? 2025 Oct 31 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 2025 Oct 31st 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) |