• javascript 计算两个日期的差值


    代码

    Typescript版

    /**
     * TimeSpan just like the class TimpSpan in C# ,represent the time difference
     * @class TimeSpan
     */
    class TimeSpan {
        constructor(millionseconds: number) {
            this.totalMillionseconds = millionseconds;
            this.totalSeconds = millionseconds / 1000;
            this.totalMinutes = this.totalSeconds / 60;
            this.totalHours = this.totalMinutes / 60;
            this.totalDays = this.totalHours / 24;
    
            this.day = Math.floor(millionseconds / (1000 * 60 * 60 * 24));
            let surplus = millionseconds % (1000 * 60 * 60 * 24);
            this.hour = surplus / (1000 * 60 * 60);
            surplus = surplus % (1000 * 60 * 60);
            this.minute = surplus / (1000 * 60);
            surplus = surplus % (1000 * 60);
            this.second = surplus / (1000);
            surplus = surplus % (1000);
            this.millionsecond = surplus;
    
        }
    
        totalDays: number;
        totalHours: number;
        totalMinutes: number;
        totalSeconds: number;
        totalMillionseconds: number;
    
    
        day: number;
        hour: number;
        minute: number;
        second: number;
        millionsecond: number;
    
        /**
         * if the date2 later than date 1 ,it's true
         * @type {boolean}
         * @memberOf TimeSpan
         */
        isPositive: boolean;
    }
    
    
    /**
     * The Aqua class
     * @class Aqua
     */
    class Aqua {
    
        /**
         * 将Date对象转换为 UTC 时间 毫秒数
         * convert Date object to UTC time millionseconds
         * @param {Date} date
         * @returns {number}
         */
        UTC(date: Date): number {
            return Date.UTC(
                date.getUTCFullYear(),
                date.getUTCMonth(),
                date.getUTCDate(),
                date.getUTCHours(),
                date.getUTCMinutes(),
                date.getUTCSeconds()
            )
        }
    
        /**
         * compare to two date ,caculate the difference 
         * 对比两个日期,计算他们的差值
         * @param {Date} date1
         * @param {Date} date2
         * @returns {TimeSpan}
         */
        compareDate(date1: Date, date2: Date): TimeSpan {
            let number1 = this.UTC(date1);
            let number2 = this.UTC(date2);
            let isPositive = number2 > number1;
            number1 = Math.abs(number1);
            number2 = Math.abs(number2);
            let res = new TimeSpan(Math.abs(number2 - number1));
            res.isPositive = isPositive;
            return res;
        }
    }
    View Code

    JavaScript版

    /**
     * TimeSpan just like the class TimpSpan in C# ,represent the time difference
     * @class TimeSpan
     */
    var TimeSpan = (function () {
        function TimeSpan(millionseconds) {
            this.totalMillionseconds = millionseconds;
            this.totalSeconds = millionseconds / 1000;
            this.totalMinutes = this.totalSeconds / 60;
            this.totalHours = this.totalMinutes / 60;
            this.totalDays = this.totalHours / 24;
            this.day = Math.floor(millionseconds / (1000 * 60 * 60 * 24));
            var surplus = millionseconds % (1000 * 60 * 60 * 24);
            this.hour = surplus / (1000 * 60 * 60);
            surplus = surplus % (1000 * 60 * 60);
            this.minute = surplus / (1000 * 60);
            surplus = surplus % (1000 * 60);
            this.second = surplus / (1000);
            surplus = surplus % (1000);
            this.millionsecond = surplus;
        }
        return TimeSpan;
    }());
    
       /**
         * 将Date对象转换为 UTC 时间 毫秒数
         * convert Date object to UTC time millionseconds
         * @param {Date} date
         * @returns {number}
         */
        Aqua.prototype.UTC = function (date) {
            return Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
        };
    
    
    
        /**
         * compare to two date ,caculate the difference
         * 对比两个日期,计算他们的差值
         * @param {Date} date1
         * @param {Date} date2
         * @returns {TimeSpan}
         */
        Aqua.prototype.compareDate = function (date1, date2) {
            var number1 = this.UTC(date1);
            var number2 = this.UTC(date2);
            var isPositive = number2 > number1;
            number1 = Math.abs(number1);
            number2 = Math.abs(number2);
            var res = new TimeSpan(Math.abs(number2 - number1));
            res.isPositive = isPositive;
            return res;
        };
    View Code

    原理

    1.将两个日期转换成UTC标准时间

    2.作差

    3.将剩余的差值毫秒计算成天小时什么的

    4.把结果放在一个类里

    欢迎访问我的GitHub

    https://github.com/rocketRobin/aqua-toolbox

  • 相关阅读:
    修改jquery里的dialog对话框插件为框架页(iframe)
    实现滚动广告的几种方案
    dojo学习二 ajax异步请求之绑定列表
    用jquery的sortable做自定义网站模块
    封装自己的js提示信息jtip办法
    让你的网站下起雨(js特效)
    关于js左侧多级菜单动态的解决方案
    dojo学习三 grid表格扩展学习
    jquery最新插件Autocomplete搜索自动提示功能
    用javascript面向对象的方式制作弹出层
  • 原文地址:https://www.cnblogs.com/rocketRobin/p/6370864.html
Copyright © 2020-2023  润新知