PHP5.3.0α2のDateTime#setTimeが変?
次のようなDateTimeクラスを使ったコード(datetime.php)
<?php $now = new DateTime(); echo $now->format("Y/m/d H:i:s") . PHP_EOL; $now->modify("1 day after"); echo $now->format("Y/m/d H:i:s") . PHP_EOL; $now->modify("1 hour after"); echo $now->format("Y/m/d H:i:s") . PHP_EOL; $now->setTime(0, 0, 0); echo $now->format("Y-m-d H:i:s") . PHP_EOL;
をPHP5.2.6で実行すると
$ /usr/local/lib/php5/bin/php -v PHP 5.2.6 (cli) (built: Sep 28 2008 17:24:45) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with Xdebug v2.0.3, Copyright (c) 2002-2007, by Derick Rethans $ TZ="Asia/Tokyo" /usr/local/lib/php5/bin/php datetime.php 2008/10/10 12:31:00 2008/10/11 12:31:00 2008/10/11 13:31:00 2008-10-11 00:00:00 $
と期待通り動作しますが、PHP5.3.0α2だと
$ /usr/local/lib/php53/bin/php -v PHP 5.3.0alpha2 (cli) (built: Sep 28 2008 20:00:54) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2008 Zend Technologies $ TZ="Asia/Tokyo" /usr/local/lib/php53/bin/php datetime.php 2008/10/10 12:31:29 2008/10/11 12:31:29 2008/10/11 13:31:29 2008-10-11 01:00:00 $
。。。???
setTimeメソッドを呼び出すと、直前に実行したmodifyメソッドが再度実行されている感じが。。。ちなみに、setTimeメソッドの代わりにdate_time_set関数を使った場合も同じでした。
まあ、正式リリースまでには直るとは思いますが。。。って、正式リリースいつだ?