Advertisement
Guest User

Untitled

a guest
Apr 27th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 3.33 KB | None | 0 0
  1. # from http://wiki.tcl.tk/5000
  2. proc comma { num {sep ,} } {
  3.     while {[regsub {^([-+]?\d+)(\d\d\d)} $num "\\1$sep\\2" num]} {}
  4.     return $num
  5. }
  6.  
  7. proc duration {num {type "1"}} {
  8.   if {$type == "1"} {
  9.     set tmp(1) [int $num]
  10.     set tmp(wks) " [int [expr $tmp(1) /60/60/24/7]]wks"
  11.     if {$tmp(wks) == " 0wks"} {
  12.       set tmp(wks) ""
  13.     }
  14.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/60/24/7]] *7*24*60*60]]
  15.     set tmp(days) " [int [expr $tmp(1) /60/24/60]]days"
  16.     if {$tmp(days) == " 0days"} {
  17.       set tmp(days) ""
  18.     }
  19.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/24/60]] *60*24*60]]
  20.     set tmp(hrs) " [int [expr $tmp(1) /60/60]]hrs"
  21.     if {$tmp(hrs) == " 0hrs"} {
  22.       set tmp(hrs) ""
  23.     }
  24.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/60]] *60*60]]
  25.     set tmp(mins) " [int [expr $tmp(1) /60]]mins"
  26.     if {$tmp(mins) == " 0mins"} {
  27.       set tmp(mins) ""
  28.     }
  29.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60]] *60]]
  30.     set tmp(secs) " $tmp(1)secs"
  31.     if {$tmp(secs) == " 0secs"} {
  32.       set tmp(secs) ""
  33.     }
  34.     return [string trimleft "$tmp(wks)$tmp(days)$tmp(hrs)$tmp(mins)$tmp(secs)"]
  35.   } elseif {$type == "2"} {
  36.     set tmp(1) [int $num]
  37.     set tmp(wks) " [int [expr $tmp(1) /60/60/24/7]] Weeks"
  38.     if {$tmp(wks) == " 0 Weeks"} {
  39.       set tmp(wks) ""
  40.     }
  41.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/60/24/7]] *7*24*60*60]]
  42.     set tmp(days) " [int [expr $tmp(1) /60/24/60]] Days"
  43.     if {$tmp(days) == " 0 Days"} {
  44.       set tmp(days) ""
  45.     }
  46.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/24/60]] *60*24*60]]
  47.     set tmp(hrs) " [int [expr $tmp(1) /60/60]] Hours"
  48.     if {$tmp(hrs) == " 0 Hours"} {
  49.       set tmp(hrs) ""
  50.     }
  51.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/60]] *60*60]]
  52.     set tmp(mins) " [int [expr $tmp(1) /60]] Minutes"
  53.     if {$tmp(mins) == " 0 Minutes"} {
  54.       set tmp(mins) ""
  55.     }
  56.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60]] *60]]
  57.     set tmp(secs) " $tmp(1) Seconds"
  58.     if {$tmp(secs) == " 0 Seconds"} {
  59.       set tmp(secs) ""
  60.     }
  61.     return [string trimleft "$tmp(wks)$tmp(days)$tmp(hrs)$tmp(mins)$tmp(secs)"]
  62.   } elseif {($type == "3") || ($type == "4")} {
  63.     set tmp(1) [int $num]
  64.     if {$type == 3} {
  65.       set tmp(days) "[int [expr $tmp(1) /60/24/60]] days, "
  66.     } elseif {$type == 4} {
  67.       set tmp(days) "[int [expr $tmp(1) /60/24/60]] d "
  68.     }
  69.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/24/60]] *60*24*60]]
  70.     set tmp(hrs) [align [int [expr $tmp(1) /60/60]] 2 0 R]
  71.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/60]] *60*60]]
  72.     set tmp(mins) [align [int [expr $tmp(1) /60]] 2 0 R]
  73.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60]] *60]]
  74.     set tmp(secs) [align $tmp(1) 2 0 R]
  75.     return "$tmp(days)$tmp(hrs):$tmp(mins):$tmp(secs)"
  76.   } elseif {$type == "5"} {
  77.     set tmp(1) [int $num]
  78.     set tmp(days) [int [expr $tmp(1) /60/24/60]]
  79.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/24/60]] *60*24*60]]
  80.     set tmp(hrs) [align [int [expr $tmp(1) /60/60]] 2 0 R]
  81.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60/60]] *60*60]]
  82.     set tmp(mins) [align [int [expr $tmp(1) /60]] 2 0 R]
  83.     incr tmp(1) -[int [expr [int [expr $tmp(1) /60]] *60]]
  84.     set tmp(secs) [align $tmp(1) 2 0 R]
  85.     return [string trimleft "$tmp(days) d, $tmp(hrs) h, $tmp(mins) m, $tmp(secs) s"]
  86.   }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement