Delphi

Delphi 语言在2010年6月编程语言排行榜中排名第十位。下面就是 GregorianTest2.pas 程序:

Program GregorianTest2;

Uses sysutils;

var

t: TTimeStamp;

procedure WriteLine(t: TTimeStamp);

begin

Write(FormatDateTime('ddd yyyy-mm-dd', TimeStampToDateTime(t)));

Writeln('  days past 0001-01-01: ', t.Date);

end;

Begin

t := DateTimeToTimeStamp(EnCodeDate(1, 1, 1));

WriteLine(t);

t := DateTimeToTimeStamp(EnCodeDate(1582, 10, 4));

WriteLine(t);

t.Date := t.Date + 1;

WriteLine(t);

t := DateTimeToTimeStamp(Now);

WriteLine(t);

t.Date := t.Date + 1;

WriteLine(t);

End.

安装兼容 Delphi 的 Free Pascal,编译和运行:

ben@ben-1520:~/work$ sudo apt-get install fp-compiler

ben@ben-1520:~/work$ fpc GregorianTest2.pas

Free Pascal Compiler version 2.4.0-2 [2010/03/06] for x86_64

Copyright (c) 1993-2009 by Florian Klaempfl

Target OS: Linux for x86-64

Compiling GregorianTest2.pas

Linking GregorianTest2

/usr/bin/ld: warning: link.res contains output sections; did you forget -T?

22 lines compiled, 0.4 sec

ben@ben-1520:~/work$ ./GregorianTest2

Sat 0001-01-01  days past 0001-01-01: 1

Sat 1582-10-04  days past 0001-01-01: 577725

Fri 1582-10-05  days past 0001-01-01: 577726

Wed 2010-06-16  days past 0001-01-01: 733939

Thu 2010-06-17  days past 0001-01-01: 733940

ben@ben-1520:~/work$

非常奇怪,Free Pascal 的 Date/Time routines 居然认为1582年10月4日是星期六,既不是正确的星期四,也不是把格里历外推到1582年10月15日之前而得到的星期一。而且更奇怪的是,它认为1582年10月4日星期六的下一天是1582年10月5日星期五,从星期六倒退回星期五了。如果有哪位朋友知道这是什么原因,请在评论中告诉我。谢谢!0b1331709591d260c1c78e86d0c51c18.png

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐