異なる日付フォーマットでの計算

久しぶりに comp.lang.awk の mktime からです。

内容は mktime() 関数を使って 'YYYY MM DD HH MM SS' という場合には簡単に引き算ができるけれど、05/Jul/2008:00:27:35 というフォーマットの際にはどうやって時間の演算を行えば良いかというものです。

Ed Morton が解答していますが、非常にうまいです。

function cvttime(t,     a) {
    split(t, a, "[/:]")
    match("JanFebMarAprMayJunJulAugSepOctNovDec", a[2]);
    a[2] = sprintf("%02d", (RSTART + 2) / 3);
    return mktime(a[3]" "a[2]" "a[1]" "a[4]" "a[5]" "a[6]);
}

BEGIN{
    t1 = "01/Dec/2005:00:04:42";
    t2 = "01/Dec/2005:17:14:12";
    print cvttime(t2) - cvttime(t1);
}