Php日期功能复杂

时间:2017-06-02 14:57:11

标签: php date datediff dateadd

我的问题:如果日期是星期一,那么我的计时器应该从早上8:30开始,并且应该计算从8:30到指定日期的时差,在这种情况下是2017-06-02 14:20:00第一个。所以时差应该是5小时50分钟。

第二种情况,在2017-06-02 09:50:00创建的日期和分配的日期是:2017-06-03 13:20:00。所以它应该从9点50分到晚上9点再计算,并且从8点30分到13点20分再次开始(如果第二天是星期一。如果第二天是太阳,那么计时器应该从上午11点到下午1:20计算并且应该给我持续时间和小时数。

我该怎么做?它在Php& MySQL的。我不是任何框架或CMS系统。它的原生php。

我的数据:

Date Created: 2017-06-02 02:50:00
Date Assigned: 2017-06-02 14:20:00

Date Created: 2017-06-02 09:50:00
Date Assigned: 2017-06-03 13:20:00

Mon - Sat   =   8:30am - 9:00pm
Sunday      =   11am - 5pm

提前谢谢。

1 个答案:

答案 0 :(得分:0)

已编辑:此功能首先检查您的日期分配日期,然后根据您的条件计算时差。

<?php 

    echo getTimeLapsedCustom('2017-06-02 14:20:00') . "<br>";
    echo getTimeLapsedCustom('2017-06-03 13:20:00') . "<br>";

    function getTimeLapsedCustom($time){
        $timecreated = '';
        $timeassigned = $time;
        $datetime2 = DateTime::createFromFormat('Y-m-d H:i:s', $timeassigned);

        if($datetime2->format('D') === 'Sun'){
            $timecreated = $datetime2->format('Y-m-d') . ' 11:00:00';
        }else{
            $timecreated = $datetime2->format('Y-m-d') . ' 08:30:00';
        }


        $datetime1 = DateTime::createFromFormat('Y-m-d H:i:s', $timecreated);

        $interval = $datetime1->diff($datetime2);
        return $interval->format('%h hours %i min');
    }

结果:

5 hours 50 min
4 hours 50 min