2011-01-13 22 views

Odpowiedz

6

Można zrobić kilka date arytmetyki:

DATE=01/02/2010 
echo $((($(date +%s) - $(date -d "$DATE" +%s)) /(24 * 60 * 60))) 
+1

Warto tu wspomnieć, że wersja nieaktualna AIX nie posiada opcji -d, więc chociaż OP prosi o rozwiązanie Linux, to nie byłoby cross- rozwiązanie platformy. – frankster

+0

Na OSX strony man mówią: '-d dst Ustawia wartość jądra dla czasu letniego. – andsens

4

konwertować datę i teraz w sekundach od początku epoki, odejmowanie, dzielenie przez liczbę sekund w ciągu dnia:

#!/bin/bash 

((a = `date -d "Wed Jan 12 02:33:22 PST 2011" +%s`)) 
((b = `date +%s`)) 
echo $(((b-a)/(60*60*24))) 
+5

Na marginesie, możesz zrobić względne daty bezpośrednio w' date': 'date - date =" 2011-01- 13 + 5 dni " – l0b0

+0

Schludnie! :) Dzięki. Jest to jednak pomocne tylko wtedy, gdy celujesz w określoną liczbę dni różniących się od podanej daty, nie znajdując różnicy między dwiema podanymi datami. – sarnold

+1

Nie trzeba wykonywać prostego zadania w podwójnych nawiasach (nie można jednak mieć spacji wokół znaku równości). Powinieneś jednak użyć '$()' zamiast podstawienia komend zamiast używać zwrotnych. –

2

Użyj daty jako wartość daty dla daty. Przykład 5 dni temu:

date -d "`date`-5days" 
+1

Nie trzeba otwierać podpowłoki: 'date -d" -5days "' jest po prostu takie samo :) – neurino

Powiązane problemy