首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何修复前一周的代码,使其正常工作

我如何修复前一周的代码,使其正常工作
EN

Stack Overflow用户
提问于 2013-06-07 19:30:57
回答 1查看 164关注 0票数 2

下面是我遇到问题的代码

这里我将当前周的数字保存在一个变量$week中

代码语言:javascript
复制
<?php
    $week=date('W')-1
?>

这里我在url中张贴周数字,以便通过减少张贴$week数字,我试图获得前一周

代码语言:javascript
复制
<td width="120" height="70" align="center" style="border-bottom:1px dashed #000000; border-top:1px dashed #000000;">
    <h1 style="color:#000000;"/>
    <a href="ex2.php?week=<?=$week-1?>">
        <img src="../images/previous_week.jpg" width="91" height="44" border="0" />
    </a>
</td>

以下代码的问题是.....

它可以正常工作到3月1日,但不能从3月的前一周开始显示unix时间戳,即1970年1月1日。

下面是从已过帐周数中获取前一周日期的代码

代码语言:javascript
复制
<?php
include ('class.php');
if(!isset($_GET['week']))
{
    $count = $obj->getD();

    if(date('N') == $count)
    {

        $prior_week = date('W') - 1;
        if($prior_week == 0)
        {

            $prior_week = 52;
            $year = date('Y') - 1;
        } else
            $year = date('Y');

            echo date("d-m-Y", strtotime($year.'W'.$prior_week.'1'));
            echo " (MON)~ ";
            echo date("d-m-Y", strtotime($year.'W'.$prior_week.'7'));
            echo " (SUN) ";
        }
    } else{

        $count = $obj->getD();
        $week=$_GET['week'];

        if($week>=0)
        {
            if(date('N') == $count)
            {
                $prior_week = $week- 1;
                if($prior_week == 0)
                {
                    $prior_week = 52;
                    $year = date('Y') - 1;
                }
                else
                   $year = date('Y');

            echo date("d-m-Y", strtotime(date('Y').'W'.$prior_week.'1'));
            echo " (MON)~ ";
            echo date("d-m-Y", strtotime(date('Y').'W'.$prior_week.'7'));
            echo " (SUN) ";
        }
    }

}
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-07 19:47:22

问题出在您传递给strtotime的日期格式中。

当数字是10时,你减去1,结果是:

代码语言:javascript
复制
date("Y-m-d",strtotime("2013W91"));

而实际上你想做的是:

代码语言:javascript
复制
date("Y-m-d",strtotime("2013W091"));

只需确保用0填充任何小于10的周数字

代码语言:javascript
复制
// ...
if ($prior_week < 10) {
  $prior_week = "0".$prior_week;
}
echo date("d-m-Y", strtotime(date('Y').'W'.$prior_week.'1'));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16983064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档