检查自 Woocommerce 订单下达以来是不是已过去 24 小时

Posted

技术标签:

【中文标题】检查自 Woocommerce 订单下达以来是不是已过去 24 小时【英文标题】:Check if there is 24 hours gone since a Woocommerce order is made检查自 Woocommerce 订单下达以来是否已过去 24 小时 【发布时间】:2020-01-09 09:45:21 【问题描述】:

我调用了一个 Woocommerce 方法 $order->get_date_created(),它返回了这个 WC_DateTime 对象:

object(WC_DateTime)#26619 (4)  ["utc_offset":protected]=> int(0) ["date"]=> string(26) "2019-09-06 14:28:17.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Amsterdam" 

我如何检查订单下单后是否超过(或少于)24 小时?

【问题讨论】:

【参考方案1】:

要检查订单创建时间是否超过 24 小时,您可以从订单时间戳中减去当前时间戳,然后检查该差值是否大于 DAY_IN_SECONDS。

time() - $order->get_date_created()->getTimestamp() > DAY_IN_SECONDS

【讨论】:

【参考方案2】:

这是检查订单创建后是否超过(或少于)24 小时的方法,使用订单创建日期时间的WC_DateTimeDateTime 方法:

$order = wc_get_order($order_id); // Get an instance of the WC_Order Object

$date_created_dt = $order->get_date_created(); // Get order date created WC_DateTime Object
$timezone        = $date_created_dt->getTimezone(); // Get the timezone
$date_created_ts = $date_created_dt->getTimestamp(); // Get the timestamp in seconds

$now_dt = new WC_DateTime(); // Get current WC_DateTime object instance
$now_dt->setTimezone( $timezone ); // Set the same time zone
$now_ts = $now_dt->getTimestamp(); // Get the current timestamp in seconds

$twenty_four_hours = 24 * 60 * 60; // 24hours in seconds

$diff_in_seconds = $now_ts - $date_created_ts; // Get the difference (in seconds)

// Output
if ( $diff_in_seconds < $twenty_four_hours ) 
    echo '<p>Order created LESS than 24 hours ago</p>';
 elseif ( $diff_in_seconds = $twenty_four_hours ) 
    echo '<p>Order created 24 hours ago</p>';
 else 
    echo '<p>Order created MORE than 24 hours ago</p>';
   

【讨论】:

以上是关于检查自 Woocommerce 订单下达以来是不是已过去 24 小时的主要内容,如果未能解决你的问题,请参考以下文章

在最近的订单模板和管理订单上显示产品帖子类型高级自定义字段(woocommerce)

如何从当前订单中获取 WooCommerce 订单 ID?

WooCommerce:将自定义 Metabox 添加到管理订单页面

更改 Woocommerce 结帐端点以显示订单摘要详细信息

如何通过 id 检查 WooCommerce 订单的付款方式?

如何添加 woocommerce 自定义订单状态?