Re: Because dates in calendar are closer than they appear

Ivan Sergio Borgonovo <[email protected]>
Newsgroups gmane.org.user-groups.linux.svlug
Organization http://www.WebThatWorks.it
Message-ID <[email protected]>

On 12/15/2016 12:43 AM, Rick Moen wrote:
> Starting around the year 2000, I've published a little essay called
> 'Recipe for a Successful Linux User Group', which has subsequently been
> republished in Usenix Association's ;login magazine and elswhere.  It's
> at http://linuxmafia.com/faq/Linux_PR/newlug.html , and widely linked.
>
> For the first time in a long while, I've made a modest addition to it,
> under item 12, that is about /usr/bin/cal being your friend for event
> timing and planning.  I just added this bit:
>
>   As the old joke goes, "Dates In Calendar Are Closer Than They Appear."
>   _Use whatever works_ to ensure that announcements of upcoming events go
>   out _on time_, which for most groups means somewhere between 1 week and
>   24 hours before show time.  Personally, I find this simple script tool
>   handy as local utility /usr/local/bin/daysutil, to do quick checks from
>   my shell prompt:
>
>   #!/bin/sh
>   echo "Type the future date in ISO 8601 (YYYY-MM-DD) format."
>   read futuredate
>   echo $futuredate | tr -s '-' ' ' | awk '{dt=mktime($0 " 00-00-00")-systime(); print int(dt/86400+1) " days";}'
>
> Now, that's a sucky little perfunctory script[1].  Among other things,
> it's a bit haphazard about the definition of 'day' (but precise enough,

You can use date to get/convert dates to epoch and then subtract and 
divide. Of course dates are tricky and this method may end up returning 
wrong results. I don't even want to think how they could end up wrong 
because dates are tricky ;)

This is way too verbose but I think it is going to be a bit more 
accurate, anyway I won't bet on it since dates are tricky and I just 
finished to write it and here it is 3:00am

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import argparse
import datetime

def days(d):
     d1 = datetime.datetime.today()
     d2 = datetime.datetime.strptime(d, '%Y-%m-%d')
     dd = (d1 - d2).days
     return dd

from datetime import date
if __name__ == "__main__":
     parser = argparse.ArgumentParser(
             description='Days between now and date',
             formatter_class=argparse.ArgumentDefaultsHelpFormatter)

     parser.add_argument(
                 dest='d',
                 metavar='DATE',
                 help='date')

     args = parser.parse_args()

     d = args.d

     print(days(d))

I'll get some sleep, try to understand better the use case and see if I 
can come up with something more useful and possibly more educative.
Possibly using posix stuff. awk is pretty powerful


-- 
Ivan Sergio Borgonovo
http://www.webthatworks.it http://www.borgonovo.net
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.