微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP-如何检查一年是否为二等分即a年?

如何解决PHP-如何检查一年是否为二等分即a年?

| 如何检查PHP中的年份是否是等分的(即a年)?     

解决方法

您可以使用PHP的date()函数执行此操作...
// L will return 1 or 0 for leap years
echo date(\'L\');

// use your own timestamp
echo date(\'L\',strtotime(\'last year\'));

// for specific year
$year = 1999;
$leap = date(\'L\',mktime(0,1,$year));
echo $year . \' \' . ($leap ? \'is\' : \'is not\') . \' a leap year.\';
让我知道这是否对您有用吗,干杯! 更新:添加了特定年份的示例     ,二等分年是a年的别称。使用
L
格式化程序,其中
$year
是要测试的年份:
echo (date(\'L\',strtotime(\"$year-01-01\")) ? \'Yes\' : \'No\');
  要调整之间的不一致   日历和季节,朱利安   日历使用了   希腊天文学家Sosigene和   基于365.25天的采用   年:3年,共365天,之后   一年366天(补充日)   总是在第24个之后添加   二月(sexto ante calendas Martiis   =三月日历的第六天)称为bis sexto(   第六天之二),因此的名称   的二等分年和二等分日   日。年分为12年   个月,分别是31和30   天和二月过的,正常   二等分的年,29天和30天   年份。      后来,当第八个月   献给奥古斯都皇帝   (八月),这个月由31人组成   与7月,7月匹配的天数   献给凯撒大帝。这就是为什么   2月是28天,   二等分年份的29天。 http://news.softpedia.com/news/The-History-of-Modern-Calendar-and-Bisect-Year-79892.shtml     ,
function is_leap_year($year)
{
    return ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));
}
    ,使用
DateTime
类:
$year = 2000;
$isLeap = DateTime::createFromFormat(\'Y\',$year)->format(\'L\') === \"1\";
var_dump($isLeap); // bool(true)
    ,如果使用julian或gregorian日历,则检查年份是否为calendar年的问题。 同时,儒略历中的年有365,25,公历年中的有365,2422。因此,公历年比儒略短11分钟。而且leap年的通用规则(year / 4必须为整数)在任何时候都无效。
Year/4
Year/100 & Year/400
因此,大多数年份中Year / 100不是are年。 另外,进行此检查还有另一个重要条件。
Year >= 1583
由于公历在1582年被命令使用,而今年由于开始使用该日历而发生变化(10月4日星期四,然后是10月15日-删除了几天),因此1583年是第一年完全公历(在公历中)。但是我决定不测试这种情况,因为这种条件可能应该在测试leap年之前进行测试-如果不确定是否按照公历来计算年份。 对于两个日历,都可以编写自己的函数(或独立的静态方法),并且结果应该与使用PHP \的类相同。 而且,使用您自己的函数/方法将花费较短的代码。
public static function Is_LeapYear($Year = 1583)
{
    $LeapYear = FALSE;

    if(CheckTypes::Is_Integer($Year / 4))
    {
        if(CheckTypes::Is_Integer($Year / 100) && !CheckTypes::Is_Integer($Year / 400))
        {
            $LeapYear = FALSE;
        }
        else
        {
            $LeapYear = TRUE;
        }
    }
    else
    {
        $LeapYear = FALSE;
    }

    return $LeapYear;
}
CheckTypes
是我自己的用于多类型检查的类(其他方法允许进行多类型检查)。 PHP11ѭ(由于一种类型检查)等于PHP内置函数中的
is_integer
。因此,可以将ѭ13with替换为
is_integer($Year / 4)
,结果将相同。 counting年的计算是根据公历而不是儒略。     ,如果您关心性能,则更快的方法是:
!($year % 4) && ($year % 100 || !($year % 400))
它返回与以下内容完全相同的结果:
(bool) date(\'L\',$year))
从101年到999999,但速度要快30倍。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。