Относительно получения даты - n дней

8

Предположим, у меня есть конкретная дата, хранящаяся в переменной date_m. Я хочу ((date_m)-25)свидание.

Например: я 15/09/2014сохранил в своей переменной, затем я хочу 21/08/2014вернуть, если вычту 25 из даты, сохраненной в переменной.

Человек
источник

Ответы:

13

В реализации GNU dateдля отображения вчерашней даты введите:

$ date --date="1 days ago"

ИЛИ

$ date --date="-1 day"

На ваш вопрос:

$ date --date="25 days ago"

ИЛИ

$ date --date="-25 day"

Для использования с переменными вы можете использовать $():

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

Для общих случаев nи на конкретную дату:

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

Источник

Нидал
источник
GNU dateне анализируется 15/09/2014как действительная дата, хотя.
Кусалананда
1

Далее указываются дата и количество дней.

Сценарий поворачивает даты в секундах и вычисляет, что такое момент времени 1 ( Tp1), если количество дней (в секундах) вычитается из заданного момента времени 2 ( Tp2). В конце секунды конвертируется обратно в дату.

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"
Рутгер Ригарт
источник
Формат даты - 15/09/2014не год, а первый.
Кусалананда
0

Несколько запоздало, но вот один из способов обработки дат в формате дд / мм / гггг за пределами США с 25-дневной относительной корректировкой:

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

Предполагается, что оболочка, например bash, способная обрабатывать перенаправление строк <<<, и GNU date.

roaima
источник