fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) exception WrongMonth fun intToMonth 1 = Date.Jan | intToMonth 2 = Date.Feb | intToMonth 3 = Date.Mar | intToMonth 4 = Date.Apr | intToMonth 5 = Date.May | intToMonth 6 = Date.Jun | intToMonth 7 = Date.Jul | intToMonth 8 = Date.Aug | intToMonth 9 = Date.Sep | intToMonth 10 = Date.Oct | intToMonth 11 = Date.Nov | intToMonth 12 = Date.Dec | intToMonth _ = raise WrongMonth fun readDate () = let val y = readInt () val _ = TextIO.scanStream Char.scan TextIO.stdIn (* skip #"/" *) val m = readInt () val _ = TextIO.scanStream Char.scan TextIO.stdIn (* skip #"/" *) val d = readInt () in (y, m, d) end val () = let val (y, m, d) = readDate () val ans = Date.date {year = y, month = intToMonth m, day = d + 2, hour = 0, minute = 0, second = 0, offset = SOME(Time.zeroTime)} in print ((Date.fmt "%Y/%m/%d" ans) ^ "\n") end