PHP
PHP 语言在2010年6月编程语言排行榜中排名第四位。下面就是 GregorianTest.php 程序:
$date = new DateTime();
echo $date->getTimezone()->getName()."\n";
echo $date->format('D Y-m-d')."\n";
$date->setDate(1582, 10, 4);
echo $date->format('D Y-m-d')."\n";
$date->add(new DateInterval('P1D'));
echo $date->format('D Y-m-d')."\n";
?>
安装 PHP 客户端工具,可以作为交互窗口(使用 --interactive 或者 -a 参数),也可以解释执行:
ben@ben-1520:~/work$ sudo apt-get install php5-cli
ben@ben-1520:~/work$ php -v
PHP 5.3.2-1Ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
ben@ben-1520:~/work$ php -a
Interactive shell
php > echo "PHP ".phpversion();
PHP 5.3.2-1ubuntu4.2
php > exit;
ben@ben-1520:~/work$ php GregorianTest.php
Asia/Chongqing
Wed 2010-06-16
Tue 1582-10-04
Wed 1582-10-05
ben@ben-1520:~/work$
非常奇怪,PHP 语言的 DateTime 类居然认为1582年10月4日是星期二,既不是正确的星期四,也不是把格里历外推到1582年10月15日之前而得到的星期一。如果有哪位朋友知道这是什么原因,请在评论中告诉我。谢谢!
此外,PHP 语言还有和历法相关的函数。下面就是 GregorianTest2.php 程序:
function writeline($cal, $jd)
{
$dt = cal_from_jd($jd, $cal);
$info = cal_info($cal);
echo $dt["abbrevdayname"]." ".$dt["date"];
echo "\tdays from 4713-01-01 B.C.: ".$jd;
echo "\t".$info["calname"];
echo "\n";
}
$jd = cal_to_jd(CAL_JULIAN, 10, 4, 1582);
writeline(CAL_JULIAN , 0);
writeline(CAL_JULIAN , 1);
writeline(CAL_JULIAN , $jd);
writeline(CAL_GREGORIAN, $jd + 1);
writeline(CAL_JULIAN , $jd + 1);
?>
解释执行:
ben@ben-1520:~/work$ php GregorianTest2.php
Mon 0/0/0 days from 4713-01-01 B.C.: 0 Julian
Tue 1/2/-4713 days from 4713-01-01 B.C.: 1 Julian
Thu 10/4/1582 days from 4713-01-01 B.C.: 2299160 Julian
Fri 10/15/1582 days from 4713-01-01 B.C.: 2299161 Gregorian
Fri 10/5/1582 days from 4713-01-01 B.C.: 2299161 Julian
ben@ben-1520:~/work$
注意,在 GregorianTest2.php 程序中必须由用户自己指定使用儒略历还是格里历。
PHP 语言主要应用是服务端,是 LAMP (Linux + Apache + MySQL + PHP, or Perl, or Python) 的重要组成部分,用于架设动态网站。