这样可以很好地工作(这意味着我可以在$today->date
处理这个问题):
$today = new \DateTime('NOW');
$today->format('Ymd');
var_dump($today);
$date = date('Ymd', strtotime($today->date . ' +1 Weekday'));
但这会引发错误:
$today = new \DateTime('NOW');
$today->format('Ymd');
var_dump($today);
$date = date('Ymd', strtotime($today->date . ' +1 Weekday'));
错误是:
Undefined property: DateTime::$date
这很奇怪!似乎$today
(DateTime对象)将作为一个对象,或者至少它的date
属性将存在,只有在它被调用时才会存在(在var_dump
这里。 ..)之前一次。
我做错了什么?
注意:我一直在做作业,this answer告诉DateTime object中没有->date
属性。
但$today->date
正在我的示例中工作而var_dump
正在返回此内容:
object(DateTime)#493 (3) {
["date"]=> string(26) "2016-12-09 11:51:00.000000"
["timezone_type"]=> int(3)
["timezone"]=> string(3) "UTC"
}
当然,使用date
作为数组键也不起作用:
Cannot use object of type DateTime as array
注意:没有回答问题,但如果有问题的人需要,可以通过这种方式获得DateTime对象的字符串值(自己的格式):
$today = new \DateTime('NOW');
$date = $today->modify('+1 Weekday')->format('Ymd');
答案 0 :(得分:2)
在Laravel中,有一种使用Carbon类来处理日期时间操作的标准。它是标准PHP DateTime对象的包装器,但却增加了许多有用的方法http://carbon.nesbot.com/docs/ 所以你可以像现在这样
$now=Carbon::now();
$now->addDay(); // or
$now->addDays(1); // to add one or whatever days to current
注意Carbon对象上的修饰符,例如addDays(1)会改变原始对象,所以如果你需要保持它不受影响的某些puprose只需先克隆它
$another_date=clone($now);
$another_date->addDays(1); // $now still untouched
格式化为字符串使用
$now->format('Y m d');
或
$now->toDateString(); // 2016-12-10
$now->toFormattedDateString(); // Dec 10, 2016
格式化与PHP中的DateTime相同。