如何在Unix中找到当前日期减去七天?

时间:2015-04-06 16:56:59

标签: unix sh ksh

我想找到今天前七天的日期。

 CURRENT_DT=`date +"%F %T"`
 diff=$CURRENT_DT-7 
 echo $diff 

我正在尝试像上面这样的东西找到比当前日期少7天的东西。有人可以帮帮我吗?

6 个答案:

答案 0 :(得分:3)

GNU date将为您计算数学:

date --date "7 days ago"

其他版本将要求您将当前日期转换为自UNIX纪元以来的秒数,手动减去7天'值秒,并将其转换回所需的形式。有关如何与Unix时间戳进行转换的详细信息,请参阅您的date版本的文档。以下是再次使用GNU date的示例:

x=$(date +%s)
x=$((x - 7 * 24 * 60 * 60))
date --date @$x

答案 1 :(得分:1)

这是一个简单的Perl脚本(与其他示例不同)与 Unix 一起使用:

perl -e 'use POSIX qw(ctime); printf "%s", ctime(time - (7 * 24 * 60 * 60));'

(当然,使用Solaris 10和令牌Linux系统进行测试 - 需要注意的是Perl不是必然是一个配置的一部分,但很可能)。

答案 2 :(得分:1)

Ksh' printf可以进行时间计算:

$ printf '%(%Y-%m-%d)T\n'
2015-04-07
$ printf '%(%Y-%m-%d)T\n' '7 days ago'
2015-03-31
$

答案 3 :(得分:1)

在OSX上为shell添加这个:

date -v-7d
> Tue Apr  3 15:16:31 EDT 2018
date
> Tue Apr 10 15:16:33 EDT 2018

需要格式化吗?

date -v-7d +%Y-%m-%d
> 2018-04-03

答案 4 :(得分:0)

我有一段时间没有使用过unix,但是在我的一个脚本中发现了这个

echo `date +%s`-604800 | bc

答案 5 :(得分:0)

DATE=$(date --date "7 days ago" | awk '{print$1,$2,$3}')
echo "$DATE"
if [ -z "$(grep -i "$DATE" test.log)" ]; then
  exit 1
fi
sed -i "1,/$DATE/d" test.log