2014-04-05 113 views
-1

我正在使用Sun Solaris unix框。 我的要求是將任何字符串(例如21Mar2014)轉換爲日期格式(例如20140321)。Unix中的字符串轉換日期

& date - d「21Mar2014」不適用於我的情況。它說「非法選項 - D」

請幫我在字符串到日期的轉換。

+0

「任何字符串'?你需要一些格式限制!我們應該在什麼日期轉換字符串'foo'?我們是否應該將字符串'前天'轉換?或者「在上個月的第三個星期四之前的四十七年有31天」。 –

+0

沒有任何字符串。我的意思是「21Mar2014」,「01Apr2013」​​等字符串。 需要將其轉換爲其他格式,如20140321 – user3500634

回答

0

我認爲問題在於-d之間有一個空格。嘗試與-d,沒有空間。

+0

沒有親愛的,這是一個錯字。我只試過-d – user3500634

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" 
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 ($_))'