Php 修改日期时间对象
我创建一个对象Php 修改日期时间对象,php,datetime,Php,Datetime,我创建一个对象 $date = new DateTime(); 它被设置为当前日期2011-04-01 21:43:40。我尝试以下方法 $date->modify('midnight'); 我希望对象设置为2011-04-01 00:00:00。但什么也没发生。对象未被修改,并继续具有2011-04-01 21:43:40日期。我只想将时间重置为午夜(00:00:oo)。有几个问题,也许有助于说明问题 php.ini文件中是否设置了时区 创建新的DateTime()对象后,是否使用v
$date = new DateTime();
它被设置为当前日期2011-04-01 21:43:40。我尝试以下方法
$date->modify('midnight');
我希望对象设置为2011-04-01 00:00:00。但什么也没发生。对象未被修改,并继续具有2011-04-01 21:43:40日期。我只想将时间重置为午夜(00:00:oo)。有几个问题,也许有助于说明问题 php.ini文件中是否设置了时区 创建新的DateTime()对象后,是否使用var_dump()或其他函数查看其参数并获取设置的日期 您是否尝试并成功地将其他日期和时间格式传递到修改方法中? 如果没有date.timezone设置,此代码(带午夜)将无法工作
更新:这段代码需要PHP5.3.6才能正常工作。在以前的版本中,
DateTime::modify('midnight')
不起作用原则检查DateTime
对象是否更改了其引用。
修改一个对象不会改变引用,所以对于条令来说,这不是一个改变。
改用new\DateTime('midnight')
。我也遇到了同样的问题!
但是返回的日期是正确的,因此我所做的是:
@$date->modify('midnight');
解决使用
$date = new DateTime(date('Y-m-d H:i:s', strtotime('today midnight')));
echo $date->format('Y-m-d H:i:s');
php.ini中未设置时区。我创建了DateTime()对象,比如$date=newdatetime();我使用Crumo查看$date对象(Drupal、Devel模块)。以下$date->modify(“+5天”);很好。问题是当试图修改时间时,nod date。偶数$date->modify('11:00');不起作用。嗯,我在codepad.org上做了一个快速检查,在我看来时间也不会改变我尝试的任何东西。奇怪。我会尝试在php.ini中设置一个默认时区,特别是当时间修改不起作用,但day mods起作用时。如果你在php.ini中没有设置时区,你应该在代码中得到一个大的警告。请确保您在开发时启用了错误报告和显示错误:
ini\u集('display\u errors',true);错误报告(-1)代码>它没有帮助。我在php.ini中设置了默认时区,但没有任何更改。您重新启动了apache或php吗?是否已打开所有错误报告?是。当然PHPinfo()显示当前时区集。DateTime::getTimezone还显示正确的时区。但是DateTime::modify仍然不适用于时间(今天,午夜),只适用于日期。但是它使用$date->modify(“+12小时”);好啊这很奇怪。嗯,我在最新的5.3.3上测试过,它也不起作用。但我安装了5.3.6,它可以正常工作。请更新您的PHP。以防其他人在PHP5.3.6之前遇到此问题。一种解决方法是这样做:$date=date\u create()->格式('Y-m-d 00:00:00')代码>因为$date->modify('midnight')代码>未按预期运行。请详细解释。你的回答喜欢评论,而不是回答!