我尝试在我的bash shell脚本中使用 $(date) ,但我希望日期为YYYY-MM-DD格式 . 我怎么得到这个?
$(date)
如果您希望年份采用两种数字格式,例如17而不是2017,请执行以下操作:
DATE=`date +%d-%m-%y`
每当我有这样的任务时,我最终会回归
$ man strftime
提醒自己所有的可能性 .
$(date +%F_%H-%M-%S)
可以用来删除之间的冒号(:)
产量
2018-06-20_09-55-58
date -d '1 hour ago' '+%Y-%m-%d'
输出将是 2015-06-14 .
2015-06-14
#!/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分钟 .
在Bash:
从 date 获得年月日
date
DATE=`date +%Y-%m-%d`
得到年 - 月 - 日小时:分钟:从 date 秒
DATE=`date '+%Y-%m-%d %H:%M:%S'`
其他可用的日期格式可以从date man pages查看:
man date
试试: $(date +%F)
$(date +%F)
你可以这样做:
$ date +'%Y-%m-%d'
您正在寻找ISO 8601标准日期格式,因此如果您有GNU日期(或任何比1988更现代的日期命令),请执行以下操作: $(date -I)
$(date -I)
使用最近的Bash(版本≥4.2),您可以使用带有格式修饰符 %(strftime_format)T 的内置 printf :
%(strftime_format)T
printf
$ printf '%(%Y-%m-%d)T\n' -1 # Get YYYY-MM-DD (-1 stands for "current time") 2017-11-10 $ printf '%(%F)T\n' -1 # Synonym of the above 2017-11-10 $ printf -v date '%(%F)T' -1 # Capture as var $date
10 回答
如果您希望年份采用两种数字格式,例如17而不是2017,请执行以下操作:
每当我有这样的任务时,我最终会回归
提醒自己所有的可能性 .
可以用来删除之间的冒号(:)
产量
输出将是
2015-06-14
.这里x是使用的样本日期,然后示例显示数据格式以及获取日期比当前日期多10分钟 .
在Bash:
从
date
获得年月日得到年 - 月 - 日小时:分钟:从
date
秒其他可用的日期格式可以从date man pages查看:
试试:
$(date +%F)
你可以这样做:
您正在寻找ISO 8601标准日期格式,因此如果您有GNU日期(或任何比1988更现代的日期命令),请执行以下操作:
$(date -I)
使用最近的Bash(版本≥4.2),您可以使用带有格式修饰符
%(strftime_format)T
的内置printf
: