In Bezug auf das Erhalten von Datum - n Tagen Datum

8

Angenommen, ich habe ein bestimmtes Datum in einer Variablen gespeichert date_m. Ich möchte ein ((date_m)-25)Date.

Beispiel: Ich habe 15/09/2014in meiner Variablen gespeichert und möchte 21/08/2014zurückgegeben werden, wenn ich 25 vom in der Variablen gespeicherten Datum subtrahiere.

Ein Mann
quelle

Antworten:

13

Geben Sie bei der GNU-Implementierung von dateFolgendes ein, um das gestrige Datum anzuzeigen:

$ date --date="1 days ago"

ODER

$ date --date="-1 day"

Für Ihre Frage:

$ date --date="25 days ago"

ODER

$ date --date="-25 day"

Für die Verwendung mit Variablen können Sie Folgendes verwenden $():

pastDate=$(date --date="-25 day")
echo "$pastDate"

Für allgemeine nFalltage und für ein bestimmtes Datum:

#!/bin/bash
date1="Tue Sep 2 07:53:47 EEST 2014"
echo "Before? "
read n
date --date="$date1 -$n day"

Quelle

Nidal
quelle
GNU dateanalysiert jedoch kein 15/09/2014gültiges Datum.
Kusalananda
1

Im Folgenden werden Datum und Anzahl der Tage angegeben.

Das Skript dreht die Daten in Sekunden und berechnet den Zeitpunkt 1 ( Tp1), wenn die Anzahl der Tage (in Sekunden) vom angegebenen Zeitpunkt 2 ( Tp2) abgezogen wird . Am Ende werden Sekunden wieder in Datum umgewandelt.

Date_m=2014/09/15
Days=25
Seconds=$(echo "$Days"*60*60*24| bc -l)
Tp2date=$(date -d "$Date_m" +%Y/%m/%d)
Tp2sec=$(date -d "$TD" +%s)
Tp1sec=$(echo "$TDsec"-"$Seconds"| bc -l)
Tp1date=$(date -d @$Tp1sec)
echo "$Tp1date"
Ruthger Righart
quelle
Das Format des Datums ist 15/09/2014nicht mit dem ersten Jahr.
Kusalananda
0

Etwas verspätet gibt es hier eine Möglichkeit, Daten im Format TT / MM / JJJJ außerhalb der USA mit der relativen Anpassung von 25 Tagen zu verarbeiten:

date_m='15/09/2014'
date --date "$(IFS=/ read d m y <<<"$date_m"; echo "$m/$d/$y - 25 days")" +%d/%m/%Y

21/08/2014

Es wird davon ausgegangen, dass eine Shell wie bashdiese eine Zeichenfolgenumleitung <<<und GNU verarbeiten kann date.

Roaima
quelle