Date manipulation: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
(→{{header|Tcl}}: + standard ML) |
||
Line 2,767: | Line 2,767: | ||
08-MAR-09 05.30.00.000000000 AM US/ARIZONA |
08-MAR-09 05.30.00.000000000 AM US/ARIZONA |
||
</pre> |
</pre> |
||
={{header|Standard ML}}== |
|||
<lang Standard ML> |
|||
val smltime = fn input => (* parse given format *) |
|||
let |
|||
val x = String.fields (fn x=>x= #" ") input |
|||
val tmp = String.fields (fn x=> x= #":") (List.nth(x,3)); |
|||
val h = (valOf(Int.fromString (hd tmp) )) + (if String.isSuffix "pm" (hd(tl tmp)) then 12 else 0 ) ; |
|||
val ms = (String.extract (hd (tl tmp), 0 ,SOME 2))^":00" ; |
|||
val mth = String.extract (hd x,0,SOME 3) |
|||
in |
|||
(* Sat is a dummy *) |
|||
Date.fromString ("Sat "^mth ^" " ^ (StringCvt.padLeft #"0" 2 (hd (tl x))) ^ " "^(StringCvt.padLeft #"0" 2 (Int.toString h))^":" ^ ms^" "^(List.nth(x,2)) ) |
|||
end; |
|||
local |
|||
val date2real = Time.toReal o Date.toTime o valOf |
|||
val onehour = date2real ( Date.fromString "Mon Jan 01 23:59:59 1973" ) - ( date2real ( Date.fromString "Mon Jan 01 22:59:59 1973" )) ; |
|||
in |
|||
val hoursFrom = fn hours => fn from => |
|||
(Date.fromTimeLocal o Time.fromReal)( ( date2real from) + hours * onehour ); |
|||
end; |
|||
</lang> |
|||
output |
|||
<lang Standard ML> |
|||
hoursFrom 12.0 ( smltime "March 7 2009 7:30pm EST" ) ; |
|||
val it = Sun Mar 08 07:30:00 2009: Date.date |
|||
</lang> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |