Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

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関数を使った場合も同じでした。

まあ、正式リリースまでには直るとは思いますが。。。って、正式リリースいつだ?