TestFtime


ftime test

* {(ftime '%B %Y' '-1 month')} - ({(ftime '%m' '-1 month')})
* {(ftime '%B %Y' '+0 month')} - ({(ftime '%m' '+0 month')})
* {(ftime '%B %Y'           )} - ({(ftime '%m'           )})
* {(ftime '%B %Y' '+1 month')} - ({(ftime '%m' '+1 month')}) -- bug? - expect Apr
* {(ftime '%B %Y' '+2 month')} - ({(ftime '%m' '+2 month')}) -- bug? - expect May
* {(ftime '%B %Y' '+3 month')} - ({(ftime '%m' '+3 month')}) -- bug? - expect Jun

* {(ftime '%B %Y' 'next month')} - ({(ftime '%m' 'next month')}) -- bug? - expect Apr
* {(ftime fmt='%A, %d %B %Y, %Hh%M' "Apr")} -- bug? - expect Apr

  • December 2020 - (12)
  • January 2021 - (01)
  • January 2021 - (01)
  • February 2021 - (02) -- bug? - expect Apr
  • March 2021 - (03) -- bug? - expect May
  • April 2021 - (04) -- bug? - expect Jun
  • February 2021 - (02) -- bug? - expect Apr
  • Thursday, 22 April 2021, 00h00 -- bug? - expect Apr
oh no! where is April ??

Because today is March 31, it adds or removes 1 month as in "February 31" and "April 31" which do not exist and are recalculated to 2020-03-02 and 2020-05-01, see https://stackoverflow.com/questions/14584115/. --Petko March 31, 2020, at 04:00 PM

!!!! Is this a likely solution ?
(:if ! equal {(ftime '%m' 'next month')} {(ftime '%m')}:)
* {(ftime '%B %Y' '+3 days')} - ({(ftime '%m' '+3 days')}) 'IF 1, expect Apr \0/'
(:else:)
* {(ftime '%B %Y' 'next month')} - ({(ftime '%m' 'next month')}) 'IF 2'
(:ifend:)

Is this a likely solution ?

  • January 2021 - (01) 'IF 1, expect Apr \0/'

VKrishn March 31, 2020, at 04:32 PM

You can do nested ftime: --Petko March 31, 2020, at 04:57 PM

inside:  15th of the current month: {(ftime "%Y-%m-15")}
* inside+1month: {(ftime when=(ftime "%Y-%m-15")+1month fmt="%B %Y")}
* inside-1month: {(ftime when=(ftime "%Y-%m-15")-1month fmt="%B %Y")}
* inside+2months: {(ftime when=(ftime "%Y-%m-15")+2month fmt="%B %Y")}

inside: 15th of the current month: 2021-01-15

  • inside+1month: February 2021
  • inside-1month: December 2020
  • inside+2months: March 2021
thanks, this works!, VKrishn March 31, 2020, at 06:56 PM

!!!! This could also work
(:if equal {(mod (ftime '%m' 'next month') (ftime '%m'))} 2:)
* {(ftime '%B %Y' '+3 days')} - ({(ftime '%m' '+3 days')}) 'IF 1, expect Apr \0/'
(:else:)
* {(ftime '%B %Y' 'next month')} - ({(ftime '%m' 'next month')}) 'IF 2'
(:ifend:)

This could also work

  • February 2021 - (02) 'IF 2'

VKrishn March 31, 2020, at 07:06 PM

 0: 00.00 00.00 config start
 1: 00.01 00.00 config end
 2: 00.12 00.12 MarkupToHTML begin
 3: 00.12 00.12 MarkupToHTML begin
 4: 00.13 00.13 MarkupToHTML end
 5: 00.13 00.13 MarkupToHTML begin
 6: 00.14 00.13 MarkupToHTML end
 7: 00.14 00.13 MarkupToHTML begin
 8: 00.14 00.13 MarkupToHTML end
 9: 00.14 00.13 MarkupToHTML begin
10: 00.14 00.13 MarkupToHTML end
11: 00.15 00.14 ReadApprovedUrls SiteAdmin.ApprovedUrls begin
12: 00.15 00.14 ReadApprovedUrls SiteAdmin.ApprovedUrls end
13: 00.30 00.26 MarkupToHTML end
14: 00.31 00.26 MarkupToHTML begin
15: 00.33 00.28 MarkupToHTML end
16: 00.33 00.28 MarkupToHTML begin
17: 00.34 00.29 MarkupToHTML end
18: 00.34 00.29 now
Peak memory: 3,170,928 bytes