Re: Script to compare dates and notify
Cyrus Kriticos wrote:
>
> # seconds since 1970-01-01 to midnight
> $ NOW=$(date -d $(date +'%Y-%m-%d') +'%s') ; echo $NOW
> 1189548000
>
> # seconds since 1970-01-01 to now
> $ NOW=$(date +'%s') ; echo $NOW
> 1189569887
>
> $ date --version | head -n 1
> date (GNU coreutils) 5.97
>
So one has to take care about portability to avoid subtle errors
when using such date contructs.
$ date +'%s'
1189593776
$ date -d $(date +'%Y-%m-%d') +'%s'
1189593776
$ date -d $(date +'%Y-%m-%d+%H:%M:%S') +'%s'
1189593776
$ date -d $(date +'%Y-%m-%d+00:00:00') +'%s'
1189548000
$ date --version
version date (AT&T Research) 2005-03-07
AT&T date assumes current date/time if no date/time is specified.
# GNU
$ gdate -d $(gdate +'%Y-%m-%d') +'%s'
1189548000
$ gdate -d $( gdate +'%H:%M:%S' )
Mit Sep 12 12:42:56 CEST 2007
$ gdate -d $( gdate +'%Y-%m-%d' )
Mit Sep 12 00:00:00 CEST 2007
GNU date assumes time is 00:00:00 if none specified, but assumes
current date if no date is specified.
More on GNU date (locales)...
$ gdate -d "$( gdate )"
gdate: invalid date `Mit Sep 12 12:42:56 CEST 2007'
$ gdate -d "$( LANG=C gdate )"
Mit Sep 12 12:42:56 CEST 2007
$ gdate --version | head -1
date (coreutils) 4.5.8
Has this been fixed in current versions of GNU date?
Janis
|