Per quanto riguarda ottenere la data - n giorni Data


8

Supponiamo che io abbia una data particolare memorizzata in una variabile date_m. Voglio un ((date_m)-25)appuntamento.

Ad esempio: ho 15/09/2014memorizzato nella mia variabile, quindi desidero essere 21/08/2014restituito se sottraggo 25 dalla data memorizzata nella variabile.

Risposte:


13

Con l'implementazione GNU di date, per visualizzare la data di ieri, inserire:

$ date --date="1 days ago"

O

$ date --date="-1 day"

Per la tua domanda:

$ date --date="25 days ago"

O

$ date --date="-25 day"

Per usarlo con le variabili, puoi usare $():

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

Per i ngiorni del caso generale e per una data specifica:

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

fonte


Tuttavia, GNU datenon analizza 15/09/2014una data valida.
Kusalananda

1

Di seguito sono dichiarati la data e il numero di giorni.

Lo script trasforma le date in secondi e calcola quale punto temporale 1 ( Tp1) è se il numero di giorni (in secondi) viene sottratto dal punto temporale 2 specificato ( Tp2). Alla fine i secondi vengono riconvertiti in data.

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"

Il formato della data è 15/09/2014, non con l'anno primo.
Kusalananda

0

In qualche modo tardivamente, ecco un modo per gestire le date del formato gg / mm / aaaa non statunitensi con la regolazione relativa di 25 giorni:

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

Presuppone una shell come bashquella in grado di gestire un reindirizzamento delle stringhe <<<e GNU date.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.