Nov 6, 2002 #1 lambros Programmer Oct 10, 2002 42 US Hi all, How do I write a loop / statement to subtract 1 second from this; 05/Nov/2002:15:10:13 Thanks, L.
Hi all, How do I write a loop / statement to subtract 1 second from this; 05/Nov/2002:15:10:13 Thanks, L.
Nov 6, 2002 1 #2 CaKiwi Programmer Apr 8, 2001 1,294 US There might be an easy way but here is a brute force method. BEGIN { FS = ":" m1["Jan"]="Dec";m1["Feb"]="Jan";m1["Mar"]="Feb" m1["Apr"]="Mar";m1["May"]="Apr";m1["Jun"]="May" m1["Jul"]="Jun";m1["Aug"]="Jul";m1["Sep"]="Aug" m1["Oct"]="Sep";m1["Nov"]="Oct";m1["Dec"]="Nov" m2["Jan"]=31;m2["Feb"]=28;m2["Mar"]=31 m2["Apr"]=30;m2["May"]=31;m2["Jun"]=30 m2["Jul"]=31;m2["Aug"]=31;m2["Sep"]=30 m2["Oct"]=31;m2["Nov"]=30;m2["Dec"]=31 } { split($1,dt,"/" dd = dt[1] mt = dt[2] yy = dt[3] hh = $2 mm = $3 ss = $4-1; if (ss < 0) { ss = 59 mm-- if (mm < 0) { mm = 59 hh-- if (hh < 0) { hh = 23 dd-- if (dd < 1) { mt = m1[mt] dd = m2[mt] if (mt=="Feb" && yy%4 == 0 && (yy%100 != 0 || yy%400 == 0)) dd=29 if (mt=="Dec" yy-- } } } } print dd "/" mt "/" yy ":" hh ":" mm ":" ss } ~ ~ ~ CaKiwi Upvote 0 Downvote
There might be an easy way but here is a brute force method. BEGIN { FS = ":" m1["Jan"]="Dec";m1["Feb"]="Jan";m1["Mar"]="Feb" m1["Apr"]="Mar";m1["May"]="Apr";m1["Jun"]="May" m1["Jul"]="Jun";m1["Aug"]="Jul";m1["Sep"]="Aug" m1["Oct"]="Sep";m1["Nov"]="Oct";m1["Dec"]="Nov" m2["Jan"]=31;m2["Feb"]=28;m2["Mar"]=31 m2["Apr"]=30;m2["May"]=31;m2["Jun"]=30 m2["Jul"]=31;m2["Aug"]=31;m2["Sep"]=30 m2["Oct"]=31;m2["Nov"]=30;m2["Dec"]=31 } { split($1,dt,"/" dd = dt[1] mt = dt[2] yy = dt[3] hh = $2 mm = $3 ss = $4-1; if (ss < 0) { ss = 59 mm-- if (mm < 0) { mm = 59 hh-- if (hh < 0) { hh = 23 dd-- if (dd < 1) { mt = m1[mt] dd = m2[mt] if (mt=="Feb" && yy%4 == 0 && (yy%100 != 0 || yy%400 == 0)) dd=29 if (mt=="Dec" yy-- } } } } print dd "/" mt "/" yy ":" hh ":" mm ":" ss } ~ ~ ~ CaKiwi