Date Format, N Days Ago
In UNIX shell script, it is very difficult to manipulate date/time using standard UNIX commands. Modern programming languages such as Perl, Python, Tcl, ..., are designed to be a general programming/scripting language that can handle this type of task with ease.
Below shows shell functions that wrap around these general scripting languages to determine the date format that is N days ago.
ago_perl() { # localtime return: # Seconds past the minute # Minutes past the hour # Hours past midnight # Day of the month # Months past the start of the year # Number of years since 1900 # Number of days since the start of the week (Sunday) # Number of days since the start of the year # Whether or not daylight savings is active days=${1:-1} perl -e "@t=localtime(time-86400*$days);\ printf('%4d-%02d-%02d', @t[5]+1900, @t[4]+1, @t[3])" } ago_tcl() { days=${1:-1} echo "puts [clock format [expr [clock seconds] - $days*86400] \ -format {%Y-%m-%d}]" | tclsh } ago_python() { days=${1:-1} python -c "import time, datetime t=datetime.datetime.fromtimestamp(time.time()-86400*$days) print '%4d-%02d-%02d' % (t.year,t.month,t.day)" }
Here is how you can use any of these functions
$ago=`ago_perl 45` $echo "45 days ago is $ago" 45 days ago is 2009-08-12
Labels: Perl, python, shell script, Tcl
0 Comments:
Post a Comment
<< Home