zoukankan      html  css  js  c++  java
  • // 日期操作 封装一些日期常用操作

    // 日期操作 封装一些日期常用操作
    var dateUtil = {
    /**
    * [getDetail 获取一个日期的详细信息]
    * @param {[type]} date [必传 日期对象|时间戳|日期格式]
    * @return {[type]} [日期相关信息]
    */
    getDetail: function (date) {
    var _date = null;
    
    if (date instanceof Date) {
    // 传进来的为日期对象
    _date = date;
    } else if (typeof date === 'string') {
    // 日期格式
    _date = new Date(this.switchConnectSign(date, 0));
    } else if (typeof date == 'number') {
    // 时间戳
    _date = new Date(date);
    } else {
    _date = new Date();
    }
    
    // 日期信息对象
    var dateInfo = {};
    // 本地当前时间
    var now = new Date();
    var date0;
    var diff;
    
    // 星期 数组
    var weekDayArr = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
    
    // 设置日期的起点时间
    date0 = new Date(_date.getFullYear(), _date.getMonth(), _date.getDate());
    now = new Date(now.getFullYear(), now.getMonth(), now.getDate());
    
    diff = date0.getTime() - now.getTime();
    
    if (diff == 0) {
    dateInfo.day1 = '今天';
    } else if (diff == 86400000) {
    dateInfo.day1 = '明天';
    } else if (diff == 172800000) {
    dateInfo.day1 = '后天';
    }
    
    dateInfo.weekday = weekDayArr[_date.getDay()];
    dateInfo.year = _date.getFullYear();
    dateInfo.month = _date.getMonth() + 1;
    dateInfo.day = _date.getDate();
    dateInfo.hour = _date.getHours();
    dateInfo.minute = _date.getMinutes();
    dateInfo.second = _date.getSeconds();
    
    return dateInfo;
    },
    /**
    * [formatNum 格式化数字 将小于10以下的数字前面加0]
    * @param {[type]} num [必传 数字]
    * @return {[type]} [数字]
    */
    formatNum: function (num) {
    if (num < 10) {
    return '0' + num;
    }
    
    return num;
    },
    // 格式化日期 转成你想要的格式 例如: dateUtil.format(new Date(), 'Y-M-D H:F:S') => yyyy-mm-dd hh:ff:ss
    /**
    * [format 格式化日期 转成你想要的格式 例如: dateUtil.format(new Date(), 'Y-M-D H:F:S') => yyyy-mm-dd hh:ff:ss]
    * @param {[type]} date [必传 date对象|时间戳字符串|毫秒数]
    * @param {[type]} formatStr [非必传 想要的格式 有设置默认日期格式]
    * @return {[type]} [想要的格式]
    */
    format: function (date, formatStr) {
    var d;
    date = date || new Date();
    
    if (date instanceof Date) {
    // 传入Date对象
    d = date;
    } else if (typeof date === 'string') {
    // 日期格式
    d = new Date(this.switchConnectSign(date, 0));
    } else if (typeof date === 'number') {
    // 时间戳
    d = new Date(date);
    }
    
    if (!formatStr) {
    // 未传入格式
    formatStr = 'Y-M-D H:F:S';
    }
    
    var self = this;
    
    return formatStr.replace(/Y|y|M|m|D|d|H|h|F|f|S|s/g, function (v) {
    switch (v) {
    case 'y':
    // yyyy => yy
    return (d.getFullYear() + '').slice(2);
    case 'Y':
    // yyyy
    return d.getFullYear();
    case 'm':
    // m
    return d.getMonth() + 1;
    case 'M':
    // mm
    return self.formatNum(d.getMonth() + 1);
    case 'd':
    // d
    return date.getDate();
    case 'D':
    // dd
    return self.formatNum(d.getDate());
    case "h":
    // h
    return d.getHours();
    case "H":
    // hh
    return self.formatNum(d.getHours());
    case "f":
    // f
    return d.getMinutes();
    case "F":
    // ff
    return self.formatNum(d.getMinutes());
    case "s":
    // s
    return d.getSeconds();
    case "S":
    // ss
    return self.formatNum(d.getSeconds());
    }
    });
    },
    /**
    * [addTime 增加时间]
    * @param {[type]} date [必传 日期对象|时间戳|日期格式]
    * @param {[type]} type [必传 增加时间的格式 例如: 1D 1天 | 2H 2小时]
    * @param {[type]} formatStr [非必传 可以设置为想要的格式]
    * @return {[type]} [日期对象|想要的日期格式]
    */
    addTime: function (date, type, formatStr) {
    var d = date || new Date();
    
    if (typeof d === 'string') {
    // 日期格式
    d = new Date(this.switchConnectSign(d, 0));
    } else if (typeof d === 'number') {
    // 时间戳
    d = new Date(d);
    } else if (!type || type.search(/Y|M|D|H|F|S/g) < 0) {
    return;
    }
    
    // 毫秒数
    var msec;
    // 数值
    var val = type.split(/Y|M|D|H|F|S/g)[0];
    // 单位
    var unit = type.substr(-1, 1);
    
    switch (unit) {
    case 'M':
    //x月
    msec = val * 30 * 24 * 60 * 60 * 1000;
    break;
    case 'D':
    // x天
    msec = val * 24 * 60 * 60 * 1000;
    break;
    case "H":
    // x小时
    msec = val * 60 * 60 * 1000;
    break;
    case "F":
    // x分钟
    msec = val * 60 * 1000;
    break;
    case "S":
    // x秒
    msec = val * 1000;
    break;
    }
    
    d.setTime(d.getTime() + msec);
    
    if (formatStr) {
    // 需要更改格式
    return this.format(d, formatStr);
    } else {
    // 直接返回日期对象 自行处理
    return d;
    }
    },
    /**
    * [switchConnectSign 切换日期连接符 IOS只支持yyyy/mm/dd格式 不支持中划线]
    * @param {[type]} date [必传 日期 yyyy/mm/dd | yyyy-mm-dd]
    * @param {[type]} type [必传 转换类型 - => / | / => -]
    * @return {[type]} [新的日期格式]
    */
    switchConnectSign: function (date, type) {
    if (type == 0) {
    return date.replace('T', ' ').replace(/-/g, '/');
    } else if (type == 1) {
    return date.replace(/T/, ' ').replace(///g, '-');
    }
    },
    /**
    * [compare 比较两个日期大小]
    * @param {[type]} date1 [必传 日期 | 日期格式字符串 | 时间戳]
    * @param {[type]} date2 [必传 日期 | 日期格式字符串 | 时间戳]
    * @return {[type]} [数字 -1 前面小于后面 | 0 前面等于后面 | 1 前面大于后面]
    */
    compare: function (date1, date2) {
    var timestamp1;
    var timestamp2;
    
    if (date1 instanceof Date) {
    // 日期
    timestamp1 = date1.getTime();
    } else if (typeof date1 === 'string') {
    // 日期格式
    timestamp1 = new Date(this.switchConnectSign(date1, 0)).getTime();
    } else if (typeof date1 === 'number') {
    // 时间戳
    timestamp1 = date1;
    } else {
    return;
    }
    
    if (date2 instanceof Date) {
    // 日期
    date2 = date2.getTime();
    } else if (typeof date2 === 'string') {
    // 日期格式
    timestamp2 = new Date(this.switchConnectSign(date2, 0)).getTime();
    } else if (typeof date2 === 'number') {
    // 时间戳
    timestamp2 = date2;
    } else {
    return;
    }
    
    if (timestamp1 < timestamp2) {
    return -1;
    } else if (timestamp1 > timestamp2) {
    return 1;
    } else {
    return 0;
    }
    }
    };
    

      

  • 相关阅读:
    CS 165 notes
    使用GDB和Valgrind调试C程序
    vi编辑器的学习使用(十四)
    vi编辑器的学习使用(十三)
    vi编辑器的学习使用(十)
    vi编辑器的学习使用(十九)
    vi编辑器的学习使用(十八)
    vi编辑器的学习使用(十一)
    vi编辑器的学习使用(十七)
    vi编辑器的学习使用(十五)
  • 原文地址:https://www.cnblogs.com/dabingqi/p/9771557.html
Copyright © 2011-2022 走看看