SMLでの時刻の扱い

便乗。

さすがにSML/NJだと普通に出来る。

$ rlwrap sml
Standard ML of New Jersey v110.72 [built: Tue Aug 24 10:47:04 2010]
- Time.now();
val it = TIME {usec=1371522289223904} : Time.time
- Date.fromTimeLocal(Time.now());
val it =
  DATE
    {day=18,hour=11,isDst=SOME false,minute=24,month=Jun,offset=NONE,
     second=57,wday=Tue,yday=168,year=2013} : Date.date
- Date.fmt "%Y-%m-%d %H:%M:%S" (Date.fromTimeLocal(Time.now()));
val it = "2013-06-18 11:25:00" : string

SML#だと…

$ smlsharp
SML# version 1.2.0 (2012-11-14 18:25:26 JST) for x86-mingw
# Time.now();
val it = _ : Time.time
# Date.fromTimeLocal(Time.now());
Runtime system error: FIXME: Date.fromTimeLocal: not implemented yet
# Date.fromTimeLocal; (* エラー起きない *)
val it = fn : Time.time -> Date.date

('A`)…
意外とBasisが揃ってなかったり…。ちなみにこのパターンの実装されてない関数は引数を与えて評価しないとエラー起きないので注意しましょう。普通にコンパイル出来ちゃいます。


参考>Basis.Date.fmt