2015-01-19 2 views
-1

This правила:Вычислить количество дней между 2 датами с пользовательскими правилами

  • Каждый месяц 30 дней (в том числе февраль).
  • Годы имеют 360 дней.

Вот один пример:

  • Начальная дата: 2/2/10
  • Дата окончания: 8/21/12

Расчет дней будет:

  • 2/2/10 до 2/1/11 = дней
  • 2/2/11 до 2/1/12 = дней
  • 2/2/12 в 8/21/12 = дней

последние 200 дней рассчитывается следующим образом:

  • 2/2/12 до 8/1/12 = 180 дней (6 месяцев)
  • 8/2/12 до 8/21/12 = 20 дней

Итого было бы 920 дней

Любая помощь будет оценена и благодарна заранее.

+2

[Что вы пытались?] (Http://mattgemmell.com/what-have-you-tried/) В какую часть вы застряли? – nnnnnn

+0

С чего начать создавать формулу для вычисления количества дней. – ven7ura

+0

У вас уже есть формула, потому что вы уже сделали расчет для дат примера, показанных в вашем вопросе ... – nnnnnn

ответ

0

Спасибо за помощь, это то, что я в конечном итоге с помощью:

$iDate = Carbon::createFromDate(2010, 2, 2); 
$eDate = Carbon::createFromDate(2012, 8, 21); 

$dateDiff = date_diff($iDate, $eDate); 

$date = 0; 
$date += $dateDiff->y * 360; 
$date += $dateDiff->m * 30; 
$date += $dateDiff->d + 1; // Need to add one more day 

dd($date); // Outputs 920 

Это использование Laravel, который имеет пакет углерода включены.

0
//2/2/10 to 2/1/11 = 360 days 
$date_1 = "2/2/10"; 
$date_2 = "2/1/11"; 
$differenceFormat = "%a"; 
$diff = dateDifference($date_1 , $date_2 , $differenceFormat) ; 
echo "<br/>"; 
echo "$date_1 to $date_2 = $diff days"; 

//2/2/11 to 2/1/12 = 360 days 
$date_1 = "2/2/11"; 
$date_2 = "2/1/12"; 
$differenceFormat = "%a"; 
$diff = dateDifference($date_1 , $date_2 , $differenceFormat) ; 
echo "<br/>"; 
echo "$date_1 to $date_2 = $diff days"; 

//2/2/12 to 8/21/12 = 200 days 
$date_1 = "2/2/12"; 
$date_2 = "8/21/12"; 
$differenceFormat = "%a"; 
$diff = dateDifference($date_1 , $date_2 , $differenceFormat) ; 
echo "<br/>"; 
echo "$date_1 to $date_2 = $diff days"; 
//final 
$date_1 = "2/2/10"; 
$date_2 = "8/21/12"; 
$differenceFormat = "%a"; 
$diff = dateDifference($date_1 , $date_2 , $differenceFormat) ; 
echo "<br/>"; 
echo "$date_1 to $date_2 = $diff days"; 
function dateDifference($date_1 , $date_2 , $differenceFormat = '%a') 
{ 
    $datetime1 = date_create($date_1); 
    $datetime2 = date_create($date_2); 

    $interval = date_diff($datetime1, $datetime2); 

    return $interval->format($differenceFormat); 

} 
Смежные вопросы