PHP周时间

本文介绍了一个PHP中关于获取当前周数的问题,当一年的第一天不是周一时,使用date('W',time())会得到错误的周数值。文章提供了一种解决此问题的方法,并给出了示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
系统自带的date('W',time()) 有bug  比如,一年中的第一天如果不是周一的话,返回值是
52或者53。 可以实测一下。就是说, 系统默认认为这一天是去年的第52/53周。
*/
 
echo get_weeks_num('2017-01-01');
 
function get_weeks_num($time){
        $month = intval(date('m',$time));//当前时间的月份
        $fyear = strtotime(date('Y-01-01',$time));//今年第一天时间戳
        $fdate = intval(date('N',$fyear));//今年第一天 周几
        $sysweek = intval(date('W',$time));//系统时间的第几周
        //大于等于52 且 当前月为1时, 返回1
        if(($sysweek >= 52 && $month == 1)){
            return 1;
        }elseif($fdate == 1){
            //如果今年的第一天是周一,返回系统时间第几周
            return $sysweek;
        }else{
            //返回系统周+1
            return $sysweek + 1;
        }
    }

<?php
    $strTime = '2017-09-14';
    $intWeek = ceil(((strtotime($strTime) - strtotime("2017-01-01 00:00:00")))/(7*86400));
    var_dump($strTime."是今年的第".$intWeek."周");
 
?>
<?PHP
    getdate();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值