zoukankan      html  css  js  c++  java
  • 轮流值班逻辑

    /*

    每周一位,轮流值日。
    获取某日轮到谁值日的逻辑如下:

    1、获取某日属于本年的第几周,周的序号从1开始


    2、设周序号为W


    3、值班同事存为数组P,例如:['王建','马清秦','刘俊','覃光焰']


    4、所有值班同事的人数即为数组P的长度,设这个长度为L


    5、令 N = W % L, N = N === 0 ? L : N, 则有: 第N周值班的同事为P[N-1]

    */

    // JavaScript实现
    
    function getWeek (dateTime) {
            let temptTime = dateTime
            //周几
            let weekday = temptTime.getDay() || 7
            //周1+5天=周六
            temptTime.setDate(temptTime.getDate() - weekday + 1 + 5)
            let firstDay = new Date(temptTime.getFullYear(), 0, 1)
            let dayOfWeek = firstDay.getDay()
            let spendDay = 1
            if (dayOfWeek != 0) {
              spendDay = 7 - dayOfWeek + 1
            }
            firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay)
            let d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000)
            let result = Math.ceil(d / 7)
            return result + 1
    }
    
    
    
    function whoDuty(str, P){
      var time = new Date(str);
      var W = getWeek(time);
      var L = P.length;
    
      var N = W % L;
    
      N = N == 0 ? L : N;
    
      return P[N-1];
    }
    
    whoDuty("2020/2/28",['A','B','C','D'])
    // PHP实现
    
    function who_is_on_duty()
    {
        $P = [
            '68649639@qq.com',
            '812154952@qq.com',
            '37534901@qq.com',
            '3141235825@qq.com'
        ];
        $W = date('W');
        $L = count($P);
        $N = $W % $L;
        $N = $N === 0 ? $L : $N;
        return $P[$N - 1];
    }
  • 相关阅读:
    Linux基础命令---mv
    Linux服务器---基础设置
    Linux基础命令---find
    Linux服务器配置---安装centos
    Linux基础命令---ls
    Linux基础命令---rmdir
    Linux基础命令---chown
    Linux基础命令---chmod
    Linux基础命令---chgrp
    Linux基础命令---ln
  • 原文地址:https://www.cnblogs.com/macliu/p/12145800.html
Copyright © 2011-2022 走看看