En cuanto a la fecha de obtención - n días Fecha

8

Supongamos que tengo una fecha particular almacenada en una variable date_m. Quiero ((date_m)-25)cita

Por ejemplo: he 15/09/2014almacenado en mi variable, luego quiero que me 21/08/2014devuelvan si resta 25 de la fecha almacenada en la variable.

Un hombre
fuente

Respuestas:

13

Con la implementación de GNU de date, para mostrar la fecha de ayer, ingrese:

$ date --date="1 days ago"

O

$ date --date="-1 day"

Para su pregunta:

$ date --date="25 days ago"

O

$ date --date="-25 day"

Para usarlo con variables, puede usar $():

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

Para casos generales ny para una fecha específica:

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

Fuente

Nidal
fuente
Sin dateembargo, GNU no se analiza 15/09/2014como una fecha válida.
Kusalananda
1

A continuación se declaran la fecha y el número de días.

El script convierte las fechas en segundos y calcula qué punto de tiempo 1 ( Tp1) es si el número de días (en segundos) se resta del punto de tiempo dado 2 ( Tp2). Al final, los segundos se convierten de nuevo en la fecha.

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
fuente
El formato de la fecha es 15/09/2014, no con el año primero.
Kusalananda
0

De alguna manera tardía, aquí hay una manera de manejar las fechas de formato dd / mm / aaaa fuera de EE. UU. Con el ajuste relativo de 25 días:

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

Asume un shell como el bashque es capaz de manejar una redirección de cadena <<<y GNU date.

roaima
fuente