首页 文章

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

提问于
浏览
855

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

10 回答

  • 271

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

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

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

    $ man strftime
    

    提醒自己所有的可能性 .

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

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

    产量

    2018-06-20_09-55-58
    
  • 1464
    date -d '1 hour ago' '+%Y-%m-%d'
    

    输出将是 2015-06-14 .

  • 4
    #!/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分钟 .

  • 4

    在Bash:

    date 获得年月日

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

    得到年 - 月 - 日小时:分钟:从 date

    DATE=`date '+%Y-%m-%d %H:%M:%S'`
    

    其他可用的日期格式可以从date man pages查看:

    man date
    
  • 15

    试试: $(date +%F)

  • 7

    你可以这样做:

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

    您正在寻找ISO 8601标准日期格式,因此如果您有GNU日期(或任何比1988更现代的日期命令),请执行以下操作: $(date -I)

  • 3

    使用最近的Bash(版本≥4.2),您可以使用带有格式修饰符 %(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
    

相关问题