====== Epoch: segundos desde 1970 ====== ==== Referencia: ==== * http://www.epochconverter.com/ * http://en.wikipedia.org/wiki/Unix_time ===== Cómo calcular Epoch: ===== * Unix shell: date +%s * MySQL: SELECT unix_timestamp(now()) * Perl: perl -e "print time" * PHP: time() * Python: import time first, then time.time() * Ruby: Time.now * Java: long epoch = System.currentTimeMillis()/1000; * Javascript: Math.round(new Date().getTime()/1000.0) * PostgreSQL: SELECT extract(epoch FROM now()); * SQL Server: SELECT DATEDIFF(s, '19700101', GETDATE()) ===== Convert date to Epoch: ===== * Unix: date +%s -d"Jan 1, 1980 00:00:01" * PHP: mktime(hour, minute, second, month, day, year) More information * MySQL: SELECT unix_timestamp(time) ===== Convert Epoch to Date: ===== * Unix: date -d @1190000000 * Awk: echo $EPOCH|awk ‘{print strftime(”%c”,$1)}’ * PHP: date(output format, epoch); * MySQL: from_unixtime(epoch, optional output format) * Perl: perl -e "print scalar(localtime(epoch))" ===== Date Scripts ===== #!/bin/bash date2stamp () { date --utc --date "$1" +%s } stamp2date (){ date --utc --date "1970-01-01 $1 sec" "+%Y-%m-%d %T" } dateDiff (){ case $1 in -s) sec=1; shift;; -m) sec=60; shift;; -h) sec=3600; shift;; -d) sec=86400; shift;; *) sec=86400;; esac dte1=$(date2stamp $1) dte2=$(date2stamp $2) diffSec=$((dte2-dte1)) if ((diffSec < 0)); then abs=-1; else abs=1; fi echo $((diffSec/sec*abs)) } # USAGE # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # convert a date into a UNIX timestamp stamp=$(date2stamp "2006-10-01 15:00") echo $stamp # from timestamp to date stamp2date $stamp # calculate the number of days between 2 dates # -s in sec. | -m in min. | -h in hours | -d in days (default) dateDiff -s "2006-10-01" "2006-10-32" dateDiff -m "2006-10-01" "2006-10-32" dateDiff -h "2006-10-01" "2006-10-32" dateDiff -d "2006-10-01" "2006-10-32" dateDiff "2006-10-01" "2006-10-32" # number of seconds between two times dateDiff -s "17:55" "23:15:07" dateDiff -m "17:55" "23:15:07" dateDiff -h "17:55" "23:15:07" # number of minutes from now until the end of the year dateDiff -m "now" "2006-12-31 24:00:00 CEST" # Other standard goodies from GNU date not too well documented in the man pages # assign a value to the variable dte for the examples below dte="2006-10-01 06:55:55" echo $dte # add 2 days, one hour and 5 sec to any date date --date "$dte 2 days 1 hour 5 sec" # substract from any date date --date "$dte 3 days 5 hours 10 sec ago" date --date "$dte -3 days -5 hours -10 sec" # or any mix of +/-. What will be the date in 3 months less 5 days date --date "now +3 months -5 days" # time conversions into ISO-8601 format (RFC-3339 internet recommended format) date --date "sun oct 1 5:45:02PM" +%FT%T%z date --iso-8601=seconds --date "sun oct 1 5:45:02PM" date --iso-8601=minutes # time conversions into RFC-822 format date --rfc-822 --date "sun oct 1 5:45:02PM"