【发布时间】:2015-06-11 02:44:37
【问题描述】:
我正在尝试查找今天前 7 天的日期。
CURRENT_DT=`date +"%F %T"`
diff=$CURRENT_DT-7
echo $diff
我正在尝试使用上述方法来查找比当前日期少 7 天的时间。谁能帮帮我?
【问题讨论】:
我正在尝试查找今天前 7 天的日期。
CURRENT_DT=`date +"%F %T"`
diff=$CURRENT_DT-7
echo $diff
我正在尝试使用上述方法来查找比当前日期少 7 天的时间。谁能帮帮我?
【问题讨论】:
GNU date 将为您计算:
date --date "7 days ago"
其他版本将要求您首先将当前日期转换为自 UNIX 纪元以来的秒数,手动减去 7 天的秒数,然后将其转换回所需的形式。请参阅您的 date 版本的文档,了解有关如何与 Unix 时间戳相互转换的详细信息。这是再次使用 GNU date 的示例:
x=$(date +%s)
x=$((x - 7 * 24 * 60 * 60))
date --date @$x
【讨论】:
date +"%F %T" --date "$pday days ago" echo $CURRENT 怎么样
$pday 替换为7,因此date 得到与--date 相同的参数。
这是一个简单的 Perl 脚本,它(与其他示例不同)适用于 Unix:
perl -e 'use POSIX qw(ctime); printf "%s", ctime(time - (7 * 24 * 60 * 60));'
(使用 Solaris 10 和令牌 Linux 系统进行测试,当然 - 需要注意的是 Perl 不是必要配置的一部分,只是很有可能)。
【讨论】:
Ksh的printf可以做时间计算:
$ printf '%(%Y-%m-%d)T\n'
2015-04-07
$ printf '%(%Y-%m-%d)T\n' '7 days ago'
2015-03-31
$
【讨论】:
为 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
【讨论】:
我有一段时间没有使用 unix,但我在我的一个脚本中发现了这个
echo `date +%s`-604800 | bc
【讨论】:
date 命令.当然,Perl 可以做到这一点。
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
【讨论】: