[HN Gopher] Schedule Cronjob for the First Monday of Every Month...
       ___________________________________________________________________
        
       Schedule Cronjob for the First Monday of Every Month, the Funky Way
        
       Author : todsacerdoti
       Score  : 64 points
       Date   : 2022-09-23 08:27 UTC (1 days ago)
        
 (HTM) web link (blog.healthchecks.io)
 (TXT) w3m dump (blog.healthchecks.io)
        
       | wkdneidbwf wrote:
       | an excellent example of how not to do things. if you need
       | something esoteric enough that no one is going to grok the
       | crontab without thought then you use something else.
        
       | drekipus wrote:
       | Unfortunately the crontab englishfier doesn't do a great job of
       | describing it,
       | 
       | https://crontab.guru/#0_0_*/100,1-7_*_MON
       | 
       | This is a nice hack, but readability has gone out the window and
       | it's really just much safer to fail early in the job itself.
        
         | cdubzzz wrote:
         | > At 00:00 on every 100th day-of-month and every day-of-month
         | from 1 through 7 if it's on Monday.
         | 
         | I guess I'm confused. Isn't that exactly correct?
        
           | ldjb wrote:
           | It is correct, but a lot wordier than "At midnight on the
           | first Monday of every month."
        
       | [deleted]
        
       | albertgoeswoof wrote:
       | Given the odd quirks and number of cron "translation" sites, it
       | strikes me that the cron syntax might not be the best approach to
       | scheduling tasks.
       | 
       | There is surely a better DSL for this.
       | 
       | Personally I like ruby's whenever gem, that transpiles to cron,
       | where you can do things like                 every :sunday, at:
       | '12pm' do         foo       end
       | 
       | But I guess we are just stuck with crontab
        
         | jcelerier wrote:
         | With systemd if I'm not mistaken this is just:
         | OnCalendar=Mon *-*-* 12:00:00
         | 
         | Here's the list of examples from man systemd.time:
         | The following special expressions may be used as shorthands for
         | longer normalized forms:                         minutely -
         | *-*-* *:*:00                      hourly - *-*-* *:00:00
         | daily - *-*-* 00:00:00                     monthly - *-*-01
         | 00:00:00                      weekly - Mon *-*-* 00:00:00
         | yearly - *-01-01 00:00:00                   quarterly -
         | *-01,04,07,10-01 00:00:00                semiannually -
         | *-01,07-01 00:00:00                 Examples for valid
         | timestamps and their normalized form:
         | Sat,Thu,Mon..Wed,Sat..Sun - Mon..Thu,Sat,Sun *-*-* 00:00:00
         | Mon,Sun 12-*-* 2,1:23 - Mon,Sun 2012-*-* 01,02:23:00
         | Wed *-1 - Wed *-*-01 00:00:00
         | Wed..Wed,Wed *-1 - Wed *-*-01 00:00:00
         | Wed, 17:48 - Wed *-*-* 17:48:00                Wed..Sat,Tue
         | 12-10-15 1:2:3 - Tue..Sat 2012-10-15 01:02:03
         | *-*-7 0:0:0 - *-*-07 00:00:00
         | 10-15 - *-10-15 00:00:00                        monday *-12-*
         | 17:00 - Mon *-12-* 17:00:00                  Mon,Fri *-*-3,1,2
         | *:30:45 - Mon,Fri *-*-01,02,03 *:30:45
         | 12,14,13,12:20,10,30 - *-*-* 12,13,14:10,20,30:00
         | 12..14:10,20,30 - *-*-* 12..14:10,20,30:00
         | mon,fri *-1/2-1,3 *:30:45 - Mon,Fri *-01/2-01,03 *:30:45
         | 03-05 08:05:40 - *-03-05 08:05:40
         | 08:05:40 - *-*-* 08:05:40
         | 05:40 - *-*-* 05:40:00                     Sat,Sun 12-05
         | 08:05:40 - Sat,Sun *-12-05 08:05:40
         | Sat,Sun 08:05:40 - Sat,Sun *-*-* 08:05:40
         | 2003-03-05 05:40 - 2003-03-05 05:40:00
         | 05:40:23.4200004/3.1700005 - *-*-* 05:40:23.420000/3.170001
         | 2003-02..04-05 - 2003-02..04-05 00:00:00
         | 2003-03-05 05:40 UTC - 2003-03-05 05:40:00 UTC
         | 2003-03-05 - 2003-03-05 00:00:00
         | 03-05 - *-03-05 00:00:00
         | hourly - *-*-* *:00:00
         | daily - *-*-* 00:00:00                                  daily
         | UTC - *-*-* 00:00:00 UTC
         | monthly - *-*-01 00:00:00
         | weekly - Mon *-*-* 00:00:00                    weekly
         | Pacific/Auckland - Mon *-*-* 00:00:00 Pacific/Auckland
         | yearly - *-01-01 00:00:00
         | annually - *-01-01 00:00:00
         | *:2/3 - *-*-* *:02/3:00
        
           | Karellen wrote:
           | https://manpages.debian.org/bullseye/systemd/systemd.time.7..
           | ..
        
         | jagged-chisel wrote:
         | If you can write the DSL and a reference parser, you might have
         | a chance at adoption. Even better if you can convert from and
         | to crontab.
        
       | kccqzy wrote:
       | I think this just speaks to a design wart in the seemingly simple
       | crontab specification. I'm personally more of a fan of iCal-style
       | (RFC5545) recurrence specification. Just check out the examples
       | in https://www.rfc-editor.org/rfc/rfc5545#section-3.8.5.3
       | 
       | Here are some thing that's possible:                   Weekly on
       | Tuesday and Thursday for five weeks         Every other week on
       | Monday, Wednesday, and Friday until December 24, 1997, starting
       | on Monday, September 1, 1997         Every other month on the
       | first and last Sunday of the month for 10 occurrences
       | Every 18 months on the 10th thru 15th of the month
       | 
       | (Almost all of those are well supported by the UI on Apple
       | Calendar and Google Calendar.)
       | 
       | I only wish it could incorporate astronomical phenomena such as
       | phases of the moon into account. Wouldn't it be great if it can
       | express concepts like "the first Sunday after the full moon that
       | occurs on or after the spring equinox" (no I'm not making this
       | example up)?
        
         | dogline wrote:
         | I guess you can just say "Easter 2023"
        
           | kccqzy wrote:
           | The idea is not to hard code the computation of specific
           | holidays, but to make the specification flexible enough.
        
           | macintux wrote:
           | Orthodox or Catholic?
        
             | gsich wrote:
             | gauss doesn't care, the changes are minimal.
        
       ___________________________________________________________________
       (page generated 2022-09-24 23:00 UTC)