国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS 獲取一段時間內的工作時長小時數

alexnevsky / 631人閱讀

摘要:本來想是想找輪子的,但是并沒有找到能用的,多數都是問題很大,所以就自己寫了一個需求說明支持自選時間段,即開始時間與結束時間根據用戶的上班及下班時間判定返回小時數技術棧思考過程怎么說呢,其實這個邏輯不是很復雜主要是確定起始時間結束時間與打卡上

本來想是想找輪子的,但是并沒有找到能用的,多數都是問題很大,所以就自己寫了一個

需求說明

支持自選時間段,即開始時間與結束時間
根據用戶的上班及下班時間判定
返回小時數

技術棧

moment.js

思考過程

怎么說呢,其實這個邏輯不是很復雜
主要是確定起始時間、結束時間與打卡上班時間、打卡下班時間的關系問題
起始時間<上班時間 ---> 將begindate設置成上班時間
起始時間>下班時間 ---> 將begindate設置成上班時間 并且日期+1
結束時間>下班時間 ---> 將enddate設置成下班時間
結束時間<上班時間 ---> 將begindate設置成上班時間 并且日期-1

然后就是判斷是不是工作日了
起始是否同一天
大概思路就是這樣 嗯

/**
   * 
   * @param {*} st start 2018-02-02 12:00
   * @param {*} et end  2018-02-02 12:00
   * @param {*} das 打卡上班  10:00:00  格式必須
   * @param {*} dax 打卡下班  10:00:00  格式必須
   */
    GetWorkHours( st, et, das, dax) {
        var  das = {h:das.substr(0,2),m:das.substr(3,2),s:das.substr(6,2)}
        var  dax = {h:dax.substr(0,2),m:dax.substr(3,2),s:dax.substr(6,2)}
        var _totalHour = 0;
        //獲取開始時間和結束時間
        var _beginDate = moment(st);
        var _endDate = moment(et);
        var _begin = {y:_beginDate.year(),M:_beginDate.month(),d:_beginDate.date()}
        var _end = {y:_endDate.year(),M:_endDate.month(),d:_endDate.date()}
        //整理
        if (_beginDate.isBefore(moment(Object.assign({},_begin,das)))) {
            //開始時間小于st,設置為st
            _beginDate.hour(das.h).minute(das.m);
        } else if (_beginDate.isAfter(moment(Object.assign({},_begin,dax)))) {
            _beginDate.add(1, "d").hour(das.h).minute(das.m);
        }
        if (_endDate.isAfter(moment(Object.assign({},_end,dax)))) {
            //結束時間大于et,設置為et
            _endDate.hour(dax.h).minute(dax.m);
        } else if (_endDate.isBefore(moment(Object.assign({},_begin,das)))) {
            _beginDate.add(-1, "d").hour(das.h).minute(das.m);
        }
        var _DateTime = _beginDate;
        while (moment(_DateTime).isSameOrBefore(_endDate, "day")) {
            //判斷是否周日,周六
            var _week = moment(_DateTime).weekday();
            if (_week == 0 || _week == 6) {
                _DateTime.add(1, "d");
                continue;
            }
            if (moment(_DateTime).isSame(_beginDate, "day")) {
                if (moment(_DateTime).isSame(_endDate, "day")) {
                    //開始時間和結束時間是同一天,結束時間-開始時間
                    _totalHour += _endDate.diff(_beginDate, "hours", true);
                    _DateTime.add(1, "d");
                    continue;
                } else {
                    //開始時間和結束時間不是同一天,et-st
                    _totalHour += moment(dax).diff(das, "hours", true);
                    _DateTime.add(1, "d");
                    continue;
                }
            } else if (moment(_DateTime).isSame(_endDate, "day")) {
                //是否和結束時間是同一天,結束時間-開始時間st,
                _totalHour += _endDate.diff(moment(_endDate).hour(das.h).minute(das.m), "hours", true);
                _DateTime.add(1, "d");
                continue;
            } else {
                //工時
                _totalHour += moment.duration(moment(dax)-moment(das)).as("hours");
                _DateTime.add(1, "d");
                continue;
            }
        }
        console.log("總計", _totalHour)
        return _totalHour 
    }

細節處可能還有瑕疵,歡迎討論

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52752.html

相關文章

  • JS 獲取一段時間內的工作時長時數

    摘要:本來想是想找輪子的,但是并沒有找到能用的,多數都是問題很大,所以就自己寫了一個需求說明支持自選時間段,即開始時間與結束時間根據用戶的上班及下班時間判定返回小時數技術棧思考過程怎么說呢,其實這個邏輯不是很復雜主要是確定起始時間結束時間與打卡上 本來想是想找輪子的,但是并沒有找到能用的,多數都是問題很大,所以就自己寫了一個 需求說明 支持自選時間段,即開始時間與結束時間根據用戶的上班及下班...

    willin 評論0 收藏0
  • 【云主機 UHost】購買指導:計費模式、配置變更、續費和回收

    摘要:計費模式云主機支持以下幾種計費方式按年,按月,按時均為預付費按年以年為計費周期支付訂單。續費有效期過期產品的續費。二按時預付費云主機過期后當天發送已過期提醒過期第天發送資源即將被回收通知過期后第天發送回收通知,并回收主機。UHost計費模式1、云主機UHost支持以下幾種計費方式:按年,按月,按時(均為預付費)按年:以年為計費周期支付訂單。享受每年訂單減免2個月費用的優惠。按月:以月為計費周...

    Tecode 評論0 收藏0
  • 【云主機 UHost】產品簡介:什么是云主機?UHost產品優勢,功能簡介與計費說明

    摘要:計費說明云主機產品目前支持按年按月按時預付費和按時后付費四種計費方式。此外,云盤費用與主機開關機狀態無關,按照完整的小時計費。舉例用戶于購買成功后付費云主機,系統將于生成時間段內的后付費訂單,并以此類推。什么是云主機云主機提供可隨時擴展的計算服務,每臺云主機以虛擬機的形式運行,主機資源包含CPU、內存、磁盤等最基礎的計算組件。云主機是UCloud最為核心的服務,有些服務,如IP、鏡像、云硬盤...

    Tecode 評論0 收藏0

發表評論

0條評論

alexnevsky

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<