简体   繁体   English

获取闰年日期php

[英]Get date in Leap years php

I want to convert 59 to 2012-feb-29.我想将 59 转换为 2012-feb-29。 I already know current year is 2012. I try following code.我已经知道今年是 2012 年。我尝试以下代码。 but it give 2012-mar-01.但它给出了 2012-mar-01。

$string = '59 2012';
$date1 = date_create_from_format('z Y', $string);
$date_time = date_format($date1, 'Y-m-d');
echo $date_time;

Try:尝试:

echo date('Y-m-d', strtotime(date('Y-01-01')) + 59 * 86400);

Update:更新:

The problem in your code is because z is starting from 0 , so you need to minus 1 .您代码中的问题是因为z0开始,所以您需要减去1

$date1 = date_create_from_format('z', 59 - 1);
$date_time = date_format($date1, 'Y-m-d');
echo $date_time;

您可以改用strtotime()

echo date('Y-m-d', strtotime('2012-01 +59 day'));

I've encountered this issue before and this is the solution I came up to:我以前遇到过这个问题,这是我想出的解决方案:

/**
 * Get date if leap year
 * 
 * @param int $year z date format
 * @param int $date Y date format
 * 
 * @return object|null
 */
private function getLeapYearDate($year, $date)
{
    if ($date >= 1 && $date <= 59) {
        return date_create_from_format('z', $date - 1);
    } else if ($date == 60) {
        return date_create($year . '-02-29');
    } else if ($date >= 61 && $date <= 365) {
        return date_create_from_format('z', $date - 2);
    } else if ($date == 366) {
        return date_create($year . '-12-31');
    }

    return null;
}

Hope this helps!希望这可以帮助! Have a good day...祝你有美好的一天...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM