2017-10-22 33 views
-1

日付範囲内のうるう年の数を数えようとしています。PHP - 日付範囲でうるう年を計算する

これは私がこれまでに(hereからコードを採用)したものである。ここ

<?php 
$date_from = strtotime('2019-06-01'); 
$date_to = strtotime('2021-05-30'); 
$leapday_count = 0; 

for($year=$date_from; $year<=$date_to; $year=strtotime('next year', $year)) { 

    if (date('L', $year)) { 
     $leapday_count++; 
    } 

} 

echo $leapday_count; 
?> 

は私が助けを必要とするものである:

  1. 上記のコードは、唯一の年を見ません開始日と終了日。たとえば、ではなく、は、開始日が2月29日後であるかどうかを考慮します。何年もの日付だけでなく、日付全体を実際に考慮に入れるにはどうすればいいですか?

    • 例予想結果:2020年2月28日2024年3月1日
  2. との間の2うるう日:2020年3月1日2024年2月28日
  3. 例予想結果と0うるう日

ありがとうございます!

答えて

2

日付の計算をやめてください。それは難しい。正確に質問に答えるが

利用日時及び差分

http://php.net/manual/en/datetime.diff.php

$datetime1 = new DateTime('2009-10-11'); 

$datetime2 = new DateTime('2009-10-13'); 

$interval = $datetime1->diff($datetime2); 

echo $interval->format('%R%a days'); 

$start = new DateTime('2020-03-01'); 
$end = new DateTime('2024-02-28'); 
$interval = ("last day of feb next year"); 

$current = clone $start; 
$leapYears = 0; 
while ($current->modify("last day of feb") && $current <= $end) { 
    if ($current->format('d') == 29 && $current > $start) { 
     $leapYears++; 
    } 
    $current->modify("+1 year"); 
} 
+0

datetimeとdiffを使用して範囲内のうるう年の日数を計算する方法がわかりません。あなたは詳細を教えていただけますか? – khofm

関連する問題