Serg Antwort ist, was ich normalerweise verwenden, wenn ich in MATLAB arbeiten bin. Heute wollte ich die Konvertierung zu Datum in MATLAB, wie der Titel sagt, ohne die im Fragetext angegebene Datumszeichenkonvertierung durchführen und die Datumsnummer aus der Shell ausgeben. Hier
ist, was ich auf die abgerundeten Datumszahl abgerechnet:
TODAY_MATLAB="$[719529 + $[`date +%s`/24/60/60]]"
Das ist wirklich nur die bash entspricht dem, was man erwarten würde: 719.529 ist die datenum- der Epoche (1970-01-01 oder datenum(1970,1,1)
in MATLAB). Ich bin auch durch KSH Gefummel in letzter Zeit und es scheint, dies es getan werden kann, mit:
TODAY_EPOCH=`date +%s`
TODAY_MATLAB=`expr $TODAY_EPOCH/24/60/60 + 719529`
Als Neben Übung, habe ich das Dezimalsystem Teil wieder auf das Datum in bash - Ich habe nicht die Mühe, in ksh, aber es ist nur arithmetisch und geht ähnlich:
N_DIGITS=7
FORMAT=$(printf "%%d.%%0%dd" $N_DIGITS)
NOW_EP_SEC=`date +%s`
SEC_PER_DAY=$((24*60*60))
NOW_EP_DAY=$(($NOW_EP /$SEC_PER_DAY))
SEC_TODAY=$(($NOW_EP_SEC - $NOW_EP_DAY*$SEC_PER_DAY))
TODAY_MATLAB="$((NOW_EP_DAY+719529))"
FRACTION_MATLAB="$(printf '%07d' $((($SEC_TODAY*10**$N_DIGITS)/SEC_PER_DAY)))"
MATLAB_DATENUM=$(printf $FORMAT $TODAY_MATLAB $FRACTION_MATLAB)
echo $MATLAB_DATENUM
Sie suchen wahrscheinlich nach der Funktion 'datetr'. –