Sobre a obtenção de Data - n dias Data

6

Suponha que eu tenha uma data específica armazenada em uma variável date_m . Eu quero ((date_m)-25) date.

Por exemplo: eu tenho 15/09/2014 armazenado na minha variável, então eu quero 21/08/2014 retornado se eu subtrair 25 da data armazenada na variável.

    
por Aman 05.09.2014 / 06:42

3 respostas

12

Com a implementação GNU de date , para exibir a data de ontem, digite:

$ date --date="1 days ago"

OR

$ date --date="-1 day"

Para sua pergunta:

$ date --date="25 days ago"

OR

$ date --date="-25 day"

Para usá-lo com variáveis, você pode usar $() :

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

Para o caso geral n dias e para uma data específica:

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

Fonte

    
por 05.09.2014 / 06:45
1

A seguir, a data e o número de dias são declarados.

O script transforma as datas em segundos e calcula o tempo 1 ( Tp1 ) se o número de dias (em segundos) for subtraído do ponto no tempo determinado 2 ( Tp2 ). No final, os segundos são convertidos de volta na 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"
    
por 06.09.2014 / 22:05
0

Um pouco tardiamente, aqui está uma maneira de lidar com datas de formato dd / mm / aaaa fora dos EUA com o ajuste relativo de 25 dias:

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

Ele supõe um shell como bash que é capaz de manipular um redirecionamento de string <<< e o GNU date .

    
por 28.06.2018 / 00:12

Tags