07072009 OCaml
週末にもぎったインゲンを茹でて食べたらめちゃうまだった。本には種まきしてから40-50日で収穫と書いてあったので、あれ、そういえば種まきしてから何日経ったかな?と調べたくなった(OCamlで)
種まきしてから40日後の日付を表示する。
#load "unix.cma";;
open Unix
let days = [| "Sun"; "Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat" |]
let months = [| "Jan"; "Feb"; "Mar"; "Apr"; "May"; "Jun";
"Jul"; "Aug"; "Sep"; "Oct"; "Nov"; "Dec" |]
let format_time time =
let tm = localtime time in
Printf.sprintf "%s %s %2d %02d:%02d:%02d %04d"
days.(tm.tm_wday)
months.(tm.tm_mon)
tm.tm_mday
tm.tm_hour
tm.tm_min
tm.tm_sec
(tm.tm_year + 1900)
let epoch_seconds date =
Scanf.sscanf date "%04d-%02d-%02d"
(fun yyyy mm dd ->
fst (mktime {tm_sec=0; tm_min=0; tm_hour=0;
tm_mday=dd; tm_mon=mm-1; tm_year=yyyy-1900;
tm_wday=0; tm_yday=0; tm_isdst=false}));;
let date = epoch_seconds "2009-05-23";;
let interval = 40. *. 60. *. 60. *. 24.;;
let then' = date +. interval
let () =
Printf.printf "harvest date is %s\n" (format_time then');
さてどうかな?
# harvest date is Thu Jul 2 00:00:00 2009
pleacを参考に書いたのだけど結構長い。もうちょっと奇麗な書き方はあるに違いない。
それにしてもいんげんは今週中に収穫しないと固くなりそうだな。