关于获取日期-n天日期


8

假设我有一个特定的日期存储在变量中date_m。我要((date_m)-25)约会

例如:我已经15/09/2014存储在变量中,21/08/2014如果我从存储在变量中的日期中减去25 ,我想返回。

Answers:


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

在下面声明日期和天数。

Tp1如果从给定的时间点2(Tp2)中减去了天数(以秒为单位),脚本将以秒为单位转换日期并计算时间点1 ()。最后,秒转换为日期。

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天相对调整来处理非美国dd / mm / yyyy格式日期的一种方法:

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能够处理字符串重定向的shell <<<和GNU date

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.