Concernant l'obtention de la date - n jours Date

8

Supposons que j'ai une date particulière stockée dans une variable date_m. Je veux un ((date_m)-25)rendez-vous.

Par exemple: j'ai 15/09/2014stocké dans ma variable, alors je veux être 21/08/2014retourné si je soustrais 25 de la date stockée dans la variable.

Un homme
la source

Réponses:

13

Avec l'implémentation GNU de date, pour afficher la date d'hier, entrez:

$ date --date="1 days ago"

OU

$ date --date="-1 day"

Pour votre question:

$ date --date="25 days ago"

OU

$ date --date="-25 day"

Pour l'utiliser avec des variables, vous pouvez utiliser $():

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

Pour les njours de cas généraux et pour une date spécifique:

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

La source

Nidal
la source
GNU daten'analyse pas cependant 15/09/2014une date valide.
Kusalananda
1

Dans la suite, la date et le nombre de jours sont déclarés.

Le script transforme les dates en secondes et calcule le point temporel 1 ( Tp1) si le nombre de jours (en secondes) est soustrait du point temporel 2 ( Tp2) donné. À la fin, la seconde est reconvertie en date.

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
la source
Le format de la date n'est 15/09/2014pas celui de l'année en premier.
Kusalananda
0

Un peu tardivement, voici une façon de gérer les dates au format jj / mm / aaaa non américaines avec l'ajustement relatif de 25 jours:

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

Il suppose un shell tel que bashcelui capable de gérer une redirection de chaîne <<<et GNU date.

roaima
la source