【问题标题】:Add minutes to time based on current time根据当前时间添加分钟
【发布时间】:2021-07-11 13:08:25
【问题描述】:

我正在尝试找出一种根据当前时间更改值的方法,目前我正在使用以下代码在下订单时添加某些分钟。

$job_description = 'Order '.$order_id;
$order_created = $order->get_date_created()->format ('Y-m-d H:i:s');

$minutes_to_add = 170;
$order_created_obj = new DateTime($order_created);
$order_created_obj->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$job_pickup_datetime = $order_created_obj->format('Y-m-d H:i:s');

$minutes_to_add = 240;
$order_created_obj = new DateTime($order_created);
$order_created_obj->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$job_delivery_datetime = $order_created_obj->format('Y-m-d H:i:s');

这工作正常(除了 $minutes_to_add = 170 出于某种原因只增加了 30 分钟到当前时间,但我忍受它) 但是后来我发现需要根据当前时间(或主要是订单时间)将 $minutes_to_add 值更改为不同的值,我编写了以下代码并在 WooCommerce 上进行了测试,但它给出了严重错误并且没有传递订单详细信息。

// Pickup time

$current_time = get_current_time()->format ('H:i:s');

if ($current_time >= '14:30:00' && $current_time <= '17:00:00') {
    $minutes_to_add = 100;
} elseif ($current_time >= '17:00:00' && $current_time < '18:00:00'){
    $minutes_to_add = 250;
} elseif ($current_time >= '18:00:00' && $current_time < '19:00:00'){
    $minutes_to_add = 300;
} else {
    $minutes_to_add = 170;
}
    
$order_created_obj = new DateTime($order_created);
$order_created_obj->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$job_pickup_datetime = $order_created_obj->format('Y-m-d H:i:s');


// delivery time

$current_time = get_current_time()->format ('H:i:s');

if ($current_time >= '14:30:00' && $current_time <= '17:00:00') {
    $minutes_to_add = 130;
} elseif ($current_time >= '17:00:00' && $current_time < '18:00:00'){
    $minutes_to_add = 280;
} elseif ($current_time >= '18:00:00' && $current_time < '19:00:00'){
    $minutes_to_add = 330;
} else {
    $minutes_to_add = 200;
}

$order_created_obj = new DateTime($order_created);
$order_created_obj->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$job_delivery_datetime = $order_created_obj->format('Y-m-d H:i:s');

【问题讨论】:

  • 您能否详细说明“不工作”。你期望什么结果,会发生什么?
  • 我正在编辑一个现有的 WP 插件,它在外部传递信息,我的期望已经解释过了,我需要根据当前(或订单)时间在 $minutes_to_add 中添加几个“分钟”。我想添加 if 语句并检查当前时间并在此基础上添加分钟。我写的是使 API 崩溃并且没有任何外部信息。
  • 如果它崩溃了,您可能需要检查服务器上的 PHP 错误日志。
  • 我找到了解决方案,接下来会发布。谢谢

标签: php wordpress time timestamp


【解决方案1】:

我找到了解决方案,如果有人需要,我会发布它。

// Order info
$job_description = 'Order '.$order_id;
$order_created = date( 'Y-m-d H:i:s', $order->get_date_created ()->getOffsetTimestamp());
$current_time = date( 'H:i:s', $order->get_date_created ()->getOffsetTimestamp());
$minutes_to_add = 0;

if ($current_time >= "00:00:00" && $current_time < "01:00:00") {
    $minutes_to_add = 600;
} elseif ($current_time >= "01:00:00" && $current_time < "02:00:00"){
    $minutes_to_add = 615;
} elseif ($current_time >= "02:00:00" && $current_time < "03:00:00"){
    $minutes_to_add = 570;
} elseif ($current_time >= "03:00:00" && $current_time < "04:00:00"){
    $minutes_to_add = 525;
} elseif ($current_time >= "23:00:00" && $current_time <= "23:59:59"){
    $minutes_to_add = 720;
} else {
    $minutes_to_add = 30;
}
    
$order_created_obj = new DateTime($order_created);
$order_created_obj->add(new DateInterval('PT' . $minutes_to_add . 'M'));
$job_pickup_datetime = $order_created_obj->format('Y-m-d H:i:s');
$current_time = date( 'H:i:s', $order->get_date_created ()->getOffsetTimestamp());


$minutes_to_add_de = 0;
if ($current_time >= "00:00:00" && $current_time < "01:00:00") {
    $minutes_to_add_de = 630;
} elseif ($current_time >= "01:00:00" && $current_time < "02:00:00"){
    $minutes_to_add_de = 645;
} elseif ($current_time >= "02:00:00" && $current_time < "03:00:00"){
    $minutes_to_add_de = 600;
} elseif ($current_time >= "22:00:00" && $current_time < "23:00:00"){
    $minutes_to_add_de = 795;
} elseif ($current_time >= "23:00:00" && $current_time <= "23:59:59"){
    $minutes_to_add_de = 750;
} else {
    $minutes_to_add_de = 60;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2019-12-20
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多