在 mailchimp 的 php 变量中插入双零 (00)

Inserting double zeros (00) in a php variable for mailchimp

好的,所以我正在尝试使用 mailchimp API 安排一个活动,到目前为止一切正常,除了最后一个 else if 没有将 00 放入我的变量中。我知道 php 只会在数组中放入 1 个零,并且想不出解决这个问题的方法。帮助 !下面的代码用于获取日期,将其放入 iso 8601 格式,然后我使用 substr_replace() 将活动安排到下一个可用于 mailchimp 的时间间隔(15、30、45、00)。

我尝试将其更改为字符串“00”,但 mailchimp 没有安排它。

$date_temp = new DateTime($date_debut);
$date_debut_iso = $date_temp->format('c');

$test = explode(':', $date_debut_iso);

//campaign has to be scheduled on :00, :15, :30, :45
if($test[1] >= 0 && $test[1] <= 15){
    $test[1] = 15;
}else if($test[1] >= 16 && $test[1] <= 30){
    $test[1] = 30;
}else if($test[1] >= 31 && $test[1] <= 45){
    $test[1] = 45;
}else if($test[1] >= 46 && $test[1] <= 59){
    $test[1] = 00;
}

$new_date = substr_replace($date_debut_iso, $test[1], 14, 2);

我需要最后一个 else if 来在我的数组 $test[1] 中存储 00 而不是 0。字符串不起作用。

我对为什么设置 $test[1] = '00'; 不起作用的唯一猜测是所有其他情况 增加 时间(或保持不变),而这种情况 减少 因为您将分钟设置为零而不更改小时。

不过,您实际上并不需要进行所有字符串操作。您可以从 DateTime 对象中获取分钟数并做一些数学运算,然后使用 ->format().

输出最终结果
$date_temp = new DateTime($date_debut);

if ($offset = $date_temp->format('i') % 15) {
    $date_temp->modify('+' . (15 - $offset) . ' minutes');
};

$new_date = $date_temp->format('c');

计算基本上是:如果剩余分钟数除以 15 不为零,则将时间增加 15 - 剩余分钟数。对于 > 45 的情况,这也会适当增加小时数。