Câu trả lời:
Với việc triển khai GNU date
, để hiển thị ngày hôm qua, hãy nhập:
$ date --date="1 days ago"
HOẶC LÀ
$ date --date="-1 day"
Đối với câu hỏi của bạn:
$ date --date="25 days ago"
HOẶC LÀ
$ date --date="-25 day"
Để sử dụng nó với các biến, bạn có thể sử dụng $()
:
pastDate=$(date --date="-25 day")
echo "$pastDate"
Đối với n
ngày trường hợp chung và cho một ngày cụ thể:
#!/bin/bash
date1="Tue Sep 2 07:53:47 EEST 2014"
echo "Before? "
read n
date --date="$date1 -$n day"
Sau đây ngày và số ngày được khai báo.
Tập lệnh biến các ngày tính bằng giây và tính toán thời gian 1 ( Tp1
) là bao nhiêu nếu số ngày (tính bằng giây) được trừ vào bảng thời gian 2 ( Tp2
) đã cho. Trong giây cuối được chuyển đổi trở lại trong ngày.
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
, không phải với năm đầu tiên.
Hơi muộn màng, đây là một cách để xử lý ngày định dạng dd / mm / yyyy không phải của Hoa Kỳ với điều chỉnh tương đối 25 ngày:
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
Nó giả định một lớp vỏ như bash
có khả năng xử lý chuyển hướng chuỗi <<<
và GNU date
.
date
không phân tích cú pháp15/09/2014
như một ngày hợp lệ mặc dù.