首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP DateInterval。回到年初

PHP DateInterval。回到年初
EN

Stack Overflow用户
提问于 2015-09-23 09:32:00
回答 1查看 325关注 0票数 1

我想写一种方法,我可以给出一段时间(例如:年度,每月.)根据这段时间,它会给我一个提前日期。

这是我的代码:

代码语言:javascript
运行
复制
public function callRuleCeilling($period)
    {
        $start = new \DateTime();

        switch ($period) {
            case 'weekly':
                $dateInterval = 'P7D';
                break;
            case 'monthly':
                $dateInterval = 'P1M';
                break;
            case 'quaterly':
                $dateInterval = 'P3M';
                break;
            case 'half-yearly':
                $dateInterval = 'P6M';
                break;
            case 'yearly':
                $dateInterval = 'P1Y';
                break;
            default:
                $dateInterval = 'P1Y';
        }
        $start->sub(new \DateInterval($dateInterval));   

        return $start    
    }

我的例子问题:

如果我把开始日期定在年中,每年一段时间。我要它在年初停止。

我也想要一个月的时间(在月初停止)等等.

它存在PHP函数吗?我找不到了。

请高亮显示我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-23 14:34:02

谢谢你的精彩表演。它允许我这样做:

代码语言:javascript
运行
复制
public function callRuleCeilling($period)
    {

        $start = new \DateTime();
        $month = 'January';

        switch ($period) {
            case 'weekly':
                $timestampMonday = strtotime('last monday', strtotime('tomorrow'));
                $start = $start->setTimestamp($timestampMonday);
                break;
            case 'monthly':
                $month = $start->format('F');
                $start = new \DateTime('first day of '.$month);
                break;
            case 'quaterly':
                $monthNumber = $start->format('n');
                if($monthNumber >= 1) $month = 'January';
                if($monthNumber >= 5) $month = 'May';
                if($monthNumber >= 9) $month = 'September';
                $start = new \DateTime('first day of '.$month);
                break;
            case 'half-yearly':
                $monthNumber = $start->format('n');
                if($monthNumber >= 1) $month = 'January';
                if($monthNumber >= 7) $month = 'July';
                $start = new \DateTime('first day of '.$month);
                break;
            case 'yearly':
                $start = new \DateTime('first day of January');
                break;
            default:
                $start = new \DateTime('first day of January');
        }

        return $start;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32735878

复制
相关文章

相似问题

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