Convertir la chaîne de date en long dans le shell unix ksh

Comment puis-je convertir le code ci-dessous dans le script c en ksh. Le code ci-dessous génère la date à partir des chaînes d’année et de jour. alors la date est convertie en une variable longue

/* assemble date ssortingng */ sprintf(date_str,"%s%2s%s",year_str,month_str,day_str); /* convert to a long */ str2long((char *) date_str, 7, (long *) &long_date); 

Si vous voulez juste le convertir en une valeur longue, vous pouvez le faire avec la fonction suivante:

 # Call with year month day # eg 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 } 

Si cela ne vous dérange pas d’utiliser le langage AWK dans votre script ksh et que vous souhaitiez le convertir en un horodatage d’époque, vous pouvez le faire avec la fonction suivante:

 # Call with year month day # eg 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; }' }