shell脚本中的YYYY-MM-DD格式日期

我尝试在我的bash shell脚本中使用$(date) ,但我希望日期为YYYY-MM-DD格式。 我怎么得到这个?


#1楼

你可以这样做:

$ date +'%Y-%m-%d'

#2楼

在bash(> = 4.2)中,最好使用printf的内置日期格式化程序(bash的一部分)而不是外部date (通常是GNU日期)。

因此:

# put current date as yyyy-mm-dd in $date
# -1 -> explicit current date, bash >=4.3 defaults to current time if not provided
# -2 -> start time for shell
printf -v date '%(%Y-%m-%d)T\n' -1 

# put current date as yyyy-mm-dd HH:MM:SS in $date
printf -v date '%(%Y-%m-%d %H:%M:%S)T\n' -1 

# to print directly remove -v flag, as such:
printf '%(%Y-%m-%d)T\n' -1
# -> current date printed to terminal

在bash(<4.2)中:

# put current date as yyyy-mm-dd in $date
date=$(date '+%Y-%m-%d')

# put current date as yyyy-mm-dd HH:MM:SS in $date
date=$(date '+%Y-%m-%d %H:%M:%S')

# print current date directly
echo $(date '+%Y-%m-%d')

可以从日期手册页查看其他可用日期格式(对于外部非bash特定命令):

man date

#3楼

尝试: $(date +%F)


#4楼

你正在寻找ISO 8601标准日期格式,所以如果你有GNU日期(或任何比1988更现代的日期命令),只需: $(date -I)


#5楼

date -d '1 hour ago' '+%Y-%m-%d'

输出将是2015-06-14


#6楼

如果您希望年份采用两种数字格式,例如17而不是2017,请执行以下操作:

DATE=`date +%d-%m-%y`

#7楼

使用最近的Bash(版本≥4.2),您可以使用内置printf和格式修饰符%(strftime_format)T

$ 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

printfdate更快,因为它是一个内置的Bash而date是一个外部命令。

同样, printf -v date ...date=$(printf ...)更快,因为它不需要分支子shell。


#8楼

#!/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分钟。


#9楼

每当我有这样的任务时,我最终会回归

$ man strftime

提醒自己所有的可能性。


#10楼

$(date +%F_%H-%M-%S)

可以用来删除之间的冒号(:)

产量

2018-06-20_09-55-58

#11楼

您可以将日期设置为环境变量,以后可以使用它

setenv DATE `date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"

要么

DATE =`date "+%Y-%m-%d"`
echo "----------- ${DATE} -------------"

#12楼

我使用$(date +"%Y-%m-%d")$(date +"%Y-%m-%d %T")和时间和小时。


#13楼

我使用以下配方:

TODAY=`date -I`
echo $TODAY

查看手册页的date ,还有许多其他有用的选项:

man date
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值