首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的时夜微分计算

问PHP中的时夜微分计算
EN

Stack Overflow用户
提问于 2012-05-10 19:04:53
回答 1查看 1.7K关注 0票数 1

我在拿到员工的夜班津贴时遇到了问题。夜间差价从晚上10点到早上6点开始

如果员工从晚上7点到早上5点半上班,那么应该有7小时30分钟的夜班时差。

我如何使用PHP计算这个值?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-10 20:34:16

代码语言:javascript
复制
<?php

define('START_NIGHT_HOUR','22');
define('START_NIGHT_MINUTE','00');
define('START_NIGHT_SECOND','00');
define('END_NIGHT_HOUR','06');
define('END_NIGHT_MINUTE','00');
define('END_NIGHT_SECOND','00');

function night_difference($start_work,$end_work)
{
    $start_night = mktime(START_NIGHT_HOUR,START_NIGHT_MINUTE,START_NIGHT_SECOND,date('m',$start_work),date('d',$start_work),date('Y',$start_work));
    $end_night   = mktime(END_NIGHT_HOUR,END_NIGHT_MINUTE,END_NIGHT_SECOND,date('m',$start_work),date('d',$start_work) + 1,date('Y',$start_work));

    if($start_work >= $start_night && $start_work <= $end_night)
    {
        if($end_work >= $end_night)
        {
            return ($end_night - $start_work) / 3600;
        }
        else
        {
            return ($end_work - $start_work) / 3600;
        }
    }
    elseif($end_work >= $start_night && $end_work <= $end_night)
    {
        if($start_work <= $start_night)
        {
            return ($end_work - $start_night) / 3600;
        }
        else
        {
            return ($end_work - $start_work) / 3600;
        }
    }
    else
    {
        if($start_work < $start_night && $end_work > $end_night)
        {
            return ($end_night - $start_night) / 3600;
        }
        return 0;
    }
}

var_dump(night_difference(strtotime('today 19:00'),strtotime('tomorrow 05:30')));
var_dump(night_difference(strtotime('today 10:00'),strtotime('today 19:00')));
var_dump(night_difference(strtotime('yesterday 10:00'),strtotime('today 08:00')));
var_dump(night_difference(strtotime('yesterday 23:00'),strtotime('today 04:00')));

输出:

代码语言:javascript
复制
float(7.5)
int(0)
int(8)
int(5)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10532687

复制
相关文章

相似问题

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