如何在Bash中打印当前时间前一天的日期?
当前回答
不是很性感,但可以胜任:
perl -e 'my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 86400);$year += 1900; $mon+= 1; printf ("YESTERDAY: %04d%02d%02d \n", $year, $mon, $mday)'
由“马丁·克莱顿”的答案形成。
其他回答
也许改用Perl ?
perl -e 'print scalar localtime( time - 86400 ) . "\n";'
或者使用nawk, (ab)使用/usr/bin/adb:
nawk 'BEGIN{printf "0t%d=Y\n", srand()-86400}' | adb
我也发现了这个…疯了!
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time\(\)/ {gsub(/ /,"",$2);printf "0t%d=Y\n", $2-86400}' | adb
如果你有BSD (OSX)日期,你可以这样做:
date -j -v-1d
Wed Dec 14 15:34:14 CET 2011
或者如果你想在任意日期上进行日期计算:
date -j -v-1d -f "%Y-%m-%d" "2011-09-01" "+%Y-%m-%d"
2011-08-31
date -d "yesterday" '+%Y-%m-%d'
or
date=$(date -d "yesterday" '+%Y-%m-%d')
echo $date
不是很性感,但可以胜任:
perl -e 'my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time - 86400);$year += 1900; $mon+= 1; printf ("YESTERDAY: %04d%02d%02d \n", $year, $mon, $mday)'
由“马丁·克莱顿”的答案形成。
yesterday=`date -d "-1 day" %F`
将昨天的日期(YYYY-MM-DD格式)放入变量$yesterday。
推荐文章
- 安装tzdata非交互式
- 在Bash中检查变量是否存在于列表中
- 解析日期字符串并更改格式
- 查看PS命令的全部输出
- 确保一次只运行一个shell脚本实例的快速方法
- 如何在Windows命令提示符下运行.sh ?
- Java SimpleDateFormat("yyyy-MM-dd' t ' hh:mm:ss' z '")给出的时区为IST
- 如何从命令行将每两行合并为一行?
- 如何复制在bash所有目录和文件递归?
- 在Java中转换字符串到日历对象
- 如何从命令行通过mysql运行一个查询?
- 在创建守护进程时执行双fork的原因是什么?
- 在Bash命令提示符上添加git分支
- 如何在Android中获取当前日期?
- 如何创建一个日期对象从字符串在javascript