The UNIX and Linux Forums  


Go Back   El UNIX y Linux Foros > Arriba Foros > UNIX for Dummies Preguntas y Respuestas > Respuestas a las Preguntas más frecuentes > Consejos y tutoriales
.
google unix.com



Consejos y tutoriales Artículos útiles de nuestros usuarios.

LinkBacks (?)
Linkback vínculo a este hilo: http://www.unix.com/tips-tutorials/31944-simple-date-time-calulation-bash.html
Publicado por Para Tipo Fecha
Marcadores en la yoga_sawant Delicioso Este mensaje Refback 12-25-2008 09:43 AM

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Obtener la fecha y la hora en el pasado 1 hora desde la fecha actual spch2o Programación de scripts de shell y 5 08-29-2008 05:32 AM
Procesamiento de un archivo de registro basado en la fecha y la hora de entrada y la fecha / hora en el archivo de registro primp Programación de scripts de shell y 4 03-16-2008 11:23 AM
una manera simple de convertir una fecha a la normalidad en cuestión de segundos fecha Travian HP-UX 2 11-23-2006 12:25 PM
simple script bash para ftp? satnamx Programación de scripts de shell y 1 04-21-2006 12:18 PM
Simple de comandos de Bash xaphalanx Programación de scripts de shell y 3 12-21-2005 03:54 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo (1) Herramientas de hilo Buscar en este Hilo Calificación: Thread Rating: 1 votes, 4.00 average. Modos de visualización
  1 links from elsewhere to this Post. Click to view. #1 (Enlace permanente)  
Old 10-08-2006
ripat ripat is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: octubre 2006
Lugar: Bélgica
Puestos: 438
Fecha y hora simples calulation en BASH

El GNU comando en la fecha de compras, pero no cuando se trata de calcular una diferencia de tiempo o fecha. Esto es lo que me ocurrió después de mirar a más de una solución.

Código debe ser libre explicando.

Código:
#!/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"
Advertencia: la falta de formato estándar % s podrían no funcionar en todas las versiones de la fecha. Funciona bien de mi GNU fecha 5.2.1

Última edición por ripat; al 10-09-2006 11:57 AM.. Exposición de motivos: se agregó algunas de las opciones para la función dateDiff
 

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 12:40 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0