Unix中的字符串到日期转换

时间:2014-04-05 07:38:30

标签: unix

我正在使用Sun Solaris unix框。 我的要求是将任何字符串(例如21Mar2014)转换为日期格式(例如20140321)。

&安培; date - d“21Mar2014”在我的情况下不起作用。它说“非法选项 - d”

请在字符串到日期转换中帮助我。

3 个答案:

答案 0 :(得分:1)

如果您有bash

#!/bin/bash
mydate="$1"                                                   
arr=("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec")
date=${mydate:0:2}
mon=${mydate:2:3}
year=${mydate:5:4}
i=0
for month in ${arr[@]}
do
  let i++;
  if [ "$month" == $mon ];then
      if [ "$i" -lt 10 ];then
         mon="0$i"
      fi
      break
  fi
done

echo "$date$mon$year"

答案 1 :(得分:0)

我认为问题是-d之间存在空格。尝试-d,没有空格。

答案 2 :(得分:0)

echo 21Mar2014 | perl -MDate::Calc=Decode_Date_EU -wnE 'say Decode_Date_EU ($_)'

不幸的是,这会打印:2014321,因此您需要更加努力才能获得正确的格式:

echo 21Mar2014 | perl -MDate::Calc=Decode_Date_EU -wne '
    printf( "%4d%02d%02d\n", Decode_Date_EU ($_))'