2016-01-13 235 views
1

如何將c中的以下代碼轉換爲ksh腳本。下面的代碼會從年月日字符串中生成日期。然後將日期轉換爲一個長變量在unix shell ksh中將日期字符串轉換爲long

/* assemble date string */ 
sprintf(date_str,"%s%2s%s",year_str,month_str,day_str); 

/* convert to a long */ 
str2long((char *) date_str, 7, (long *) &long_date);  
+0

是從2015年1月1日的數值20150101您所需的輸出? – David

+0

重新審視上面的例子後,它似乎沒有得到值20150101。我無法理解所需的輸出。任何幫助? – xGen

回答

0

如果你只是希望它轉換爲直長值,你可以用下面的函數做到這一點:

# Call with year month day 
# e.g. convert_date_to_long 2015 01 01 
function convert_date_to_long() { 
    date="${1}${2}${3}" 
    let long_date=$date 

    if [[ $long_date -gt 0 ]]; then 
     echo "Numeric date: ${long_date}" 
    fi 
} 

如果你不介意使用您的ksh腳本中的AWK語言,你想將其轉換成一個劃時代的時間戳,你可以用下面的函數做到這一點:

# Call with year month day 
# e.g. convert_date_to_epoch 2015 01 01 
function convert_date_to_epoch() { 
    awk -v year=${1} -v month=${2} -v day=${3} 'BEGIN { 
     agg_date = year " " month " " day " 00 00 00"; 
     utime = mktime(agg_date); 
     print utime; 
    }' 
}