Добавьте недели в десятичном значении в php

Я пытаюсь добавить недели в десятичных значениях, таких как 1,5, 2,5 до даты через функцию strtotime(). Но это не дает правильный результат. Я использую это как:

$start_date = "2015-01-01";

$date = strtotime(date("Y-m-d", strtotime($start_date)) . " +3.5 weeks");

$date = date("Y-m-d",$date);

echo $date;

И его выдача 2015-02-04 в качестве выхода. Когда добавляются недесятичные значения, такие как:

$date = strtotime(date("Y-m-d", strtotime($start_date)) . " +3 weeks");

Это дает прекрасные результаты.

Есть мысли об этом?

2 ответа

Решение
$date = '2015-01-01';

$weeks = "2,3,4,4.5";

foreach(explode(",", $weeks) as $week) {
 print $week."\n";
 $hours = $week * 24 * 7;
 print $hours."\n";
 print date("Y-m-d", strtotime("{$date} +{$hours} hours"))."\n";
}

Вы можете использовать эту логику, умножить десятичную неделю или нет, например 1,2,2,5,3,3,5, и умножить ее на количество часов в неделю:

$week = 2.5;
$desired = '+ '.$week*168.' hours';
$date = strtotime($desired, $start_date);

Однако зачем играть со строками, если вы можете просто играть с целыми числами часов или секунд и делать простые дополнения?

Другие вопросы по тегам