如何在 Unix 中找到当前日期减去 7 天?
How can I find the current date minus seven days in Unix?
我正在尝试查找今天之前 7 天的日期。
CURRENT_DT=`date +"%F %T"`
diff=$CURRENT_DT-7
echo $diff
我正在尝试类似上面的方法来查找比当前日期少 7 天的时间。谁能帮帮我吗?
我有一段时间没有使用 unix,但我在我的一个脚本中发现了这个
echo `date +%s`-604800 | bc
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
这是一个简单的 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
DATE=$(date --date "7 days ago" | awk '{print,,}')
echo "$DATE"
if [ -z "$(grep -i "$DATE" test.log)" ]; then
exit 1
fi
sed -i "1,/$DATE/d" test.log
我正在尝试查找今天之前 7 天的日期。
CURRENT_DT=`date +"%F %T"`
diff=$CURRENT_DT-7
echo $diff
我正在尝试类似上面的方法来查找比当前日期少 7 天的时间。谁能帮帮我吗?
我有一段时间没有使用 unix,但我在我的一个脚本中发现了这个
echo `date +%s`-604800 | bc
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
这是一个简单的 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
DATE=$(date --date "7 days ago" | awk '{print,,}')
echo "$DATE"
if [ -z "$(grep -i "$DATE" test.log)" ]; then
exit 1
fi
sed -i "1,/$DATE/d" test.log