Print file modification times:
$filename = "201010211800_a.png"; $mtime = (stat $filename)[9]; chomp($mtime); $mtime_date = `/bin/date --date='Jan 1, 1970 00:00:00 +0000 + $mtime seconds' '+%A, %d %B %Y %H:%M:%S %Z'`; Output is: Thursday, 21 October 2010 22:21:49 UTC
Querying a specific timezone to determine DST:
[cjuckins@lnxopc2: ~]$ zdump America/New_York America/New_York Tue May 3 13:41:20 2011 EDT [cjuckins@lnxopc2: ~]$ zdump America/Los_Angeles America/Los_Angeles Tue May 3 10:41:52 2011 PDT
Manipulating date/time from NWS text products:
If you take the date/time line from a current text product, such as: 806 PM EST TUE 3 JAN 2012 Add a colon to the hour/minute: 8:06 PM EST TUE 3 JAN 2012 You can feed that string directly into the linux date command and manipulate it forward and backward by any amount of time and then print it out in the same format. Forward 6 hours: $ date --date="8:06 PM EST TUE 3 JAN 2012 6 hours" "+%I%M %p %Z %a %d %b %Y" | sed 's/^0//' | sed 's/\s0/ /g' | sed 's/./\u&/g' 206 AM EST WED 4 JAN 2012 Forward 30 minutes: date --date="8:06 PM EST TUE 3 JAN 2012 30 minutes" "+%I%M %p %Z %a %d %b %Y" | sed 's/^0//' | sed 's/\s0/ /g' | sed 's/./\u&/g' 836 PM EST TUE 3 JAN 2012 Backward 12 hours: date --date="8:06 PM EST TUE 3 JAN 2012 -12 hours" "+%I%M %p %Z %a %d %b %Y" | sed 's/^0//' | sed 's/\s0/ /g' | sed 's/./\u&/g' 806 AM EST TUE 3 JAN 2012 The 1st sed strips any leading zeros at the beginning of the line, the 2nd sed strips any other leading zeros, and the final sed makes it all UPPER.
Other file stats info: http://perldoc.perl.org/functions/stat.html
Using Linux 'date' to print a time:
[juckins@lightning: /var/www/html/amtrak_status]$ date --date="Sat Nov 19 2011 11:00 pm" Sat Nov 19 23:00:00 EST 2011
More examples of 'date' to compute a time based upon a given time and some offset value:
[juckins@lightning: ~]$ date --date="sat nov 19 2011 6:00pm" Sat Nov 19 18:00:00 EST 2011 [juckins@lightning: ~]$ date --date="sat nov 19 2011 6:00pm 1 hours 1 minutes" Sat Nov 19 19:01:00 EST 2011 [juckins@lightning: ~]$ date --date="sat nov 19 2011 6:00pm -1 hours -1 minutes" Sat Nov 19 16:59:00 EST 2011 $date --date="yesterday 08:00 gmt" '+%y%m%d/%H%M' 121002/0800 $ date --date="today 18:00 gmt" '+%y%m%d/%H%M' 121003/1800 $ date --date="yesterday 08:00 edt" '+%y%m%d/%H%M' 121002/1200 $ date -d @1446390000 Sun Nov 1 15:00:00 UTC 2015
Converting from seconds and a different timezone:
TZ=":US/Eastern" date -d @1651335000 TZ=":America/Phoenix" date -d @1651335000 TZ=":America/Phoenix" date --date='2022-05-04T14:00:00.000Z'