代码
$order_dispatch_date = DateTime::createFromFormat('Ymd', $inc['order_dispatch_date']);
$order_dispatch_date = $order_dispatch_date->format('Ymd');
$order_collection = date('Ymd', strtotime('next thursday', $order_dispatch_date));
$order_collection = new DateTime($order_collection);
echo '['.$order_collection->format('d/m/Y') . ' - ' . $order_dispatch_date . ' - ' . gettype($order_dispatch_date) . ' ] ';
如果输入为:20171128
[29/08/1970 - 20171128 - string ]
我的问题是为什么第一个输出显示在1970年8月29日而不是2017年11月20日?
答案 0 :(得分:1)
停止在对象,字符串和时间戳之间来回切换,特别是当你重新使用相同的变量时。这是不必要的,难以理解。
如果您有一个Ymd
格式的字符串,并且您想要在周四继续使用等效字符串,请使用此字符:
$inc['order_dispatch_date'] = '20171128';
$order_dispatch_date = DateTime::createFromFormat('Ymd', $inc['order_dispatch_date'])->modify('next thursday');
echo $order_dispatch_date->format('Ymd');
// 20171130
答案 1 :(得分:0)
基本上:
$order_collection = date('Ymd', strtotime('next thursday', strtotime($order_dispatch_date)));
这应该有效:)