为了账号安全,请及时绑定邮箱和手机立即绑定

在bash中转换日期格式

在bash中转换日期格式

肥皂起泡泡 2019-12-25 14:51:18
我有这样的日期格式:“ 2011年6月27日”,我想将其转换为20110627可以用bash做吗?
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

在OSX上,我使用-f来指定输入格式,使用-j来不尝试设置任何日期,并使用输出格式说明符。例如:


$ date -j -f "%m/%d/%y %H:%M:%S %p" "8/22/15 8:15:00 am" +"%m%d%y"

082215

你的例子:


$ date -j -f "%d %b %Y" "27 JUN 2011" +%Y%m%d

20110627


查看完整回答
反对 回复 2019-12-25
?
www说

TA贡献1775条经验 获得超8个赞

只用bash:


convert_date () {

    local months=( JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC )

    local i

    for (( i=0; i<11; i++ )); do

        [[ $2 = ${months[$i]} ]] && break

    done

    printf "%4d%02d%02d\n" $3 $(( i+1 )) $1

}

然后像这样调用它


d=$( convert_date 27 JUN 2011 )

或者,如果“旧”日期字符串存储在变量中


d_old="27 JUN 2011"

d=$( convert_date $d_old )  # not quoted


查看完整回答
反对 回复 2019-12-25
  • 3 回答
  • 0 关注
  • 876 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信