我正在使用Sun Solaris unix框。 我的要求是将任何字符串(例如21Mar2014)转换为日期格式(例如20140321)。
&安培; date - d“21Mar2014”在我的情况下不起作用。它说“非法选项 - d”
请在字符串到日期转换中帮助我。
答案 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 ($_))'