YYYY-MM-DD format date in shell script
我尝试在bash shell脚本中使用
在巴什:
从
1 | DATE=`date +%Y-%m-%d` |
GET年-月-日-时:分:秒从
1 | DATE=`date '+%Y-%m-%d %H:%M:%S'` |
其他可用的日期格式可从日期手册页查看:
1 | man date |
试一试:
你可以这样做:
1 | $ date +'%Y-%m-%d' |
您正在寻找ISO 8601标准日期格式,所以如果您有GNU日期(或比1988年更现代的日期命令),只需执行:
1 | date -d '1 hour ago' '+%Y-%m-%d' |
输出将是
1 | $(date +%F_%H-%M-%S) |
可用于删除中间的冒号(:)
输出
1 | 2018-06-20_09-55-58 |
对于最新的bash(版本≥4.2),您可以使用内置的
1 2 3 4 5 6 7 | $ printf '%(%Y-%m-%d)T ' -1 # Get YYYY-MM-DD (-1 stands for"current time") 2017-11-10 $ printf '%(%F)T ' -1 # Synonym of the above 2017-11-10 $ printf -v date '%(%F)T' -1 # Capture as var $date |
如果您希望年份采用两个数字格式,如17而不是2017,请执行以下操作:
1 | DATE=`date +%d-%m-%y` |
每当我有这样的任务,我都会回到
1 | $ man strftime |
提醒自己所有的可能性。
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash -e x='2018-01-18 10:00:00' a=$(date -d"$x") b=$(date -d"$a 10 min""+%Y-%m-%d %H:%M:%S") c=$(date -d"$b 10 min""+%Y-%m-%d %H:%M:%S") #date -d"$a 30 min""+%Y-%m-%d %H:%M:%S" echo Entered Date is $x echo Second Date is $b echo Third Date is $c |
这里x是使用的示例日期&;然后示例显示数据的格式以及获取比当前日期多10分钟的日期。
我在时间和小时中使用$(date+"%y-%m-%d")或$(date+"%y-%m-%d%t")。
您可以将日期设置为环境变量,稍后您可以使用它
1 2 | setenv DATE `date"+%Y-%m-%d"` echo"----------- ${DATE} -------------" |
或
1 2 | DATE =`date"+%Y-%m-%d"` echo"----------- ${DATE} -------------" |