如何在Bash中打印当前时间前一天的日期?
当前回答
支持DST的解决方案:
通过操作时区可以将时钟调整几个小时。由于是夏时制,24小时前可以是今天也可以是前天。
你确定昨天是二三十小时前。哪一个?最近的一次不是今天。
echo -e "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
echo命令中使用的-e参数在bash中是必需的,但在ksh中无效。在ksh中,您可以使用相同的命令,不带-e标志。
当您的脚本将在不同的环境中使用时,您可以使用#!/bin/ksh或#!/bin/bash你也可以用换行符替换\n:
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
其他回答
不是很性感,但可以胜任:
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)'
由“马丁·克莱顿”的答案形成。
支持DST的解决方案:
通过操作时区可以将时钟调整几个小时。由于是夏时制,24小时前可以是今天也可以是前天。
你确定昨天是二三十小时前。哪一个?最近的一次不是今天。
echo -e "$(TZ=GMT+30 date +%Y-%m-%d)\n$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
echo命令中使用的-e参数在bash中是必需的,但在ksh中无效。在ksh中,您可以使用相同的命令,不带-e标志。
当您的脚本将在不同的环境中使用时,您可以使用#!/bin/ksh或#!/bin/bash你也可以用换行符替换\n:
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1
#!/bin/bash
OFFSET=1;
eval `date "+day=%d; month=%m; year=%Y"`
# Subtract offset from day, if it goes below one use 'cal'
# to determine the number of days in the previous month.
day=`expr $day - $OFFSET`
if [ $day -le 0 ] ;then
month=`expr $month - 1`
if [ $month -eq 0 ] ;then
year=`expr $year - 1`
month=12
fi
set `cal $month $year`
xday=${$#}
day=`expr $xday + $day`
fi
echo $year-$month-$day
date +%Y:%m:%d|awk -vFS=":" -vOFS=":" '{$3=$3-1;print}'
2009:11:9
yesterday=`date -d "-1 day" %F`
将昨天的日期(YYYY-MM-DD格式)放入变量$yesterday。
推荐文章
- 在mongodb中存储日期/时间的最佳方法
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何获得一个变量值,如果变量名存储为字符串?
- RVM不是一个函数,用' RVM use…’不会起作用
- 如何打破一个循环在Bash?
- 如何从终端机发送电子邮件?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 在Bash中模拟do-while循环
- 前一个月的Python日期
- 在Bash中将输出赋给变量
- 如何在python中验证日期字符串格式?
- 如何在Mac OS X 10.6中使硬件发出哔哔声
- 如何减去X天从一个日期对象在Java?
- 从Docker容器获取环境变量