Si usted necesita para encontrar la diferencia entre dos horas , si la diferencia es de sólo unos pocos segundos, o años , usted puede hacer esto en la versión GNU de Unix con el comando "date" . Sin embargo , el procedimiento no es intuitivo , ya que el comando date no proporciona directamente una bandera o argumento a favor de este procedimiento. Además , existen varias versiones del comando date en Unix . Tenga en cuenta que lo que funciona en la versión GNU del comando date no funcionará con la versión de BSD . Unix Epoch
La clave para resolver este problema es entender cómo el equipo realmente mantiene la noción del tiempo . Una computadora Unix almacena todo momento como el número de segundos que han transcurrido desde el Epoch Unix . El Unix Epoch es la medianoche del 1 de enero de 1970.
Obtener los segundos desde el Epoch Unix
Usted puede obtener el número de segundos desde el Epoch Unix a un determinado fecha usando una combinación de la bandera "+ % s " y " - Fecha " de comandos. Escriba lo siguiente en una shell para obtener el número de segundos desde el Epoch Unix al 11 de marzo de 2011:
fecha
- Fecha 2011-03-11 + % s
El resultado será : 1299823200 . Se puede utilizar cualquier formato de fecha y hora que se puede analizar mediante el comando "date" en este script. Puede escribir " man date " en su shell para leer sobre todos los formatos de fecha válidos.
La solución
puede tomar cualquier fecha o dado vez en un formato compatible con Unix y lo convierten en el segundo antes o desde el Epoch Unix , se puede ver la diferencia entre dos tiempos restando los resultados de dos de estos comandos.
Escriba los siguientes comandos en la shell:
d1 = `date - Fecha 2011-03-11 + % s `
d2 = `date - Fecha 2010-05-12 + % s `
< p > echo "$ ((( d1 -d2 ))) segundo diferencia "
En las dos primeras líneas , el carácter ' no es un símbolo de comillas . Es una copia de garrapata. Usted puede localizar a este personaje a la izquierda de la tecla " 1 " en un teclado estándar de EE.UU. .
La salida debería ser la diferencia entre los dos tiempos en segundos . Si usted necesita, usted puede convertir esto en minutos , horas, días , y así sucesivamente dividiendo por el número de segundos en un minuto , minuto en una hora o hora en un día.
Un script
sería una molestia que escribir esos tres comandos largos cada vez, usted debe encapsular en un script. ! Abre tu editor de texto favorito y pega el siguiente :
# /usr /bin /env golpe
d1 = `date - fecha $ 1 + % s `
d2 = `date - fecha de $ 2 + % s `
echo "$ ((( d1 -d2 ))) segundo diferencia "
cambia algunas cosas. La línea superior permite que el shell actual saben que cree este script para usar el lenguaje de la cáscara " fiesta " . A medida que cambie las fechas de los dos comandos de fecha por "$ 1" y "$ 2 ", podrá aprobar nuevas fechas para la secuencia de comandos cada vez que se ejecuta . Una vez más , en las dos primeras líneas , se utiliza la parte de atrás -tick ' , ni una sola cita .
Guardar la secuencia de comandos con el nombre " timediff.sh " y ejecute el comando "chmod + x timediff.sh . " en la shell de Unix dejar saber que tiene permiso para ejecutar este como un script
Después de hacer esto , se puede ver la diferencia entre dos fechas y horas escribiendo:
. /timediff.sh 09/13/2010 14/01/1981