在bash中将string转换为date

我有一个格式为“yyyymmdd”的string。 这是一个在bash中的string,我想把它转换成一个date,以便可以使用所有其他的date函数。

“20121212”string转换为格式为“%Y%m%d”的“20121212”date。

这对我工作:

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' 

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

我们可以使用date -d选项

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

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

2)从给定日期= 20121212获取下一个或最后一个日子。 就像过去7天以特定的格式得到一个日期

 date -d '20121212 -7 days' +'%Y-%m-%d' 

3)如果我们在某些变量中获得日期,比如说dat

 dat2=$(date -d "$dat -1 days" +'%Y%m%d') 

日期只能用于GNU日期(通常是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" 

    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

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

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