在bash中将字符串转换为日期

Yah*_*-Me 25 unix string bash shell date

我有一个格式为"yyyymmdd"的字符串.它是bash中的一个字符串,我希望将其转换为日期,以便可以在其上使用所有其他日期函数.

"20121212"字符串转换为"20121212"日期,格式为"%Y%m%d".

Nah*_*eul 28

这对我有用:

date -d '20121212 7 days'
date -d '12-DEC-2012 7 days'
date -d '2012-12-12 7 days'
date -d '2012-12-12 4:10:10PM 7 days'
date -d '2012-12-12 16:10:55 7 days'
Run Code Online (Sandbox Code Playgroud)

然后你可以格式化输出添加参数'+%Y%m%d'

  • 为什么您在所有示例中都输入了“7 天”?它在没有这些数据的情况下工作。只需`date -d '20121212' +%Y%m%d` 就可以做作者想要的 (3认同)
  • @VictorPerov 这是作者在他的问题评论中所要求的。 (2认同)

min*_*s23 13

我们可以使用date -d选项

1)将格式更改为"%Y-%m-%d"格式,即20121212至2012-12-12

date -d '20121212' +'%Y-%m-%d'
Run Code Online (Sandbox Code Playgroud)

2)从给定日期= 20121212获取下一天或最后一天.比如使用特定格式获取过去7天的日期

date -d '20121212 -7 days' +'%Y-%m-%d'
Run Code Online (Sandbox Code Playgroud)

3)如果我们在一些变量说dat的日期

dat2=$(date -d "$dat -1 days" +'%Y%m%d')
Run Code Online (Sandbox Code Playgroud)


Van*_*jor 8

date 仅适用于 GNU date(通常与 Linux 一起提供)

对于 OS X,有两种选择:

  1. 更改命令(已验证)

    #!/bin/sh
    #DATE=20090801204150
    #date -jf "%Y%m%d%H%M%S" $DATE "+date \"%A,%_d %B %Y %H:%M:%S\""
    date "Saturday, 1 August 2009 20:41:50"
    
    Run Code Online (Sandbox Code Playgroud)

    http://www.unix.com/shell-programming-and-scripting/116310-date-conversion.html

  2. 从 Coreutils 下载 GNU 实用程序 - GNU 核心实用程序(尚未验证) http://www.unix.com/emergency-unix-and-linux-support/199565-convert-string-date-add-1-a.html


joh*_*n64 5

只需使用 date 命令的 -d 选项,例如

date -d '20121212' +'%Y %m'
Run Code Online (Sandbox Code Playgroud)