zoukankan      html  css  js  c++  java
  • js日期工具

    /**
     * 日期工具类
     */
    define(function(require, exports, module) {
        var constants = require("constants"); // 常量类
        
        /**
         * 描述: 把日期格式字符串转换成js Date类型
         *
         * @param dateStr: 日期字符串 格式必须为 yyyy-MM-dd hh:mm:ss 或 yyyy-MM-dd hh:mm:ss.S
         * @returns 返回JS日期对象
         */
        function getDateByStr(dateStr){
            if (!dateStr) {
                return;
            }
            //去掉后面毫秒数
            if (dateStr.indexOf(".") != -1) {
                dateStr = dateStr.substring(0, dateStr.indexOf("."));
            }
            
            // 形如20160101120101转换成2016-01-01 12:01:01
            if ($.trim(dateStr).length == 14 && dateStr.indexOf("-") == -1) {
                dateStr = dateStr.replace(/(d{4})(d{2})(d{2})(d{2})(d{2})(d{2})/, '$1-$2-$3 $4:$5:$6');
            }
            
            // 形如20160101转换成2016-01-01
            if ($.trim(dateStr).length == 8 && dateStr.indexOf("-") == -1) {
                dateStr = dateStr.replace(/(d{4})(d{2})(d{2})/, '$1-$2-$3 00:00:00');
            }
            dateStr = dateStr.replace(new RegExp("-", "gm"), "/");
            return new Date(dateStr);
        }
        
        /**
         * 描述:把yyyy-MM-dd hh:mm:ss (.S)日期字符串转化为指定格式的日期字符串
         *
         * @author
         * @param srcDate: 1、源日期为日期格式的字符串 如:2015-11-12 11:34:45
         *                    2、源日期为Date类型 如:new Date();
         * @param fmt: 格式,如:yyyy-MM-dd
         */
        function dateFormat(srcDate, fmt){
            if (!srcDate || !fmt) {
                return srcDate;
            }
            
            // 把字符串转换成日期对象
            var date = (typeof(srcDate) == "object") ? srcDate : getDateByStr(srcDate);
            
            // 非date类型时返回原字符串
            if (isNaN(date.getDay())) {
                return srcDate;
            }
            
            var o = {
                "M+" : date.getMonth() + 1, // 月份
                "d+" : date.getDate(), //
                "h+" : date.getHours(), // 小时
                "m+" : date.getMinutes(), //
                "s+" : date.getSeconds(), //
                "q+" : Math.floor((date.getMonth() + 3) / 3), // 季度
                "S" : date.getMilliseconds() // 毫秒
            };
            
            // 年份比较特殊,单独处理
            if (/(y+)/.test(fmt)){
                fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
            }
                
            for ( var k in o){
                if (new RegExp("(" + k + ")").test(fmt)){
                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                }
            }
                
            return fmt;
        }
    
        /**
         * 描述: 获取时间毫秒数
         *
         * @author
         * @param date: 格式为yyyy-MM-dd hh:mm:ss 或 yyyy-MM-dd hh:mm:ss.S的时间字符串
         * @returns 返回时间毫秒数
         */
        function getDateTime(date){
            if (!date) {
                return 0;
            }
            //去掉后面毫秒数
            if (date.indexOf(".") != -1) {
                date = date.substring(0, date.indexOf("."));
            }
            date = date.replace(new RegExp("-", "gm"), "/");
            return (new Date(date)).getTime();
        }
        
        /**
         * 描述:根据年份和月份计算出有多少天
         * @author
         * @param year: 年份
         * @param month: 月份
         * @returns 天数
         */
        function getMonthDays(year, month){     
            var monthStartDate = new Date(year, month - 1, 1);      
            var monthEndDate = new Date(year, month, 1);      
            return (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);      
        }
        
        /**
         * 计算某日期为一周中的哪天
         */
        function cweekday(wday)
        {
            var hzWeek= new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");
            return hzWeek[wday];
        }
    
        /**
         * 获取当前时间前后N天日期的方法
         * 可以得到昨天,今天,明天,一月前,三月前,半年前,一年前的日期,
         * 只要修改参数就可以实现得到任何一个天数
         * 昨天:getDateStr(-1)
         * 今天:getDateStr(0)
         * 明天:getDateStr(1)
         * 
         * formate==>  1:yyyyMMdd
         *             2:yyyy-MM-dd
         */
        function getDateStr(addDayCount, formate){ 
            var dd = new Date(); 
            dd.setDate(dd.getDate() + addDayCount); //获取addDayCount天后的日期 
            var y = dd.getFullYear(); 
            var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1);//获取当前月份的日期,不足10补0
            var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0
            if(1 == formate){
                return y + m + d; //格式:yyyyMMdd
            }else if(2 == formate){
                return y + "-" + m + "-" + d; 
            }
        }
    
        function cala(date)
        {
            var y = date.substring(0,4);//年份
            var m = date.substring(5,7);//月份
            var d = date.substring(8,10);//日期
            var next = 0;
            var cash_time;
            var ttt=new Date(y,m-1,d).getTime()+next * 24000 * 3600;
    
            var theday=new Date();
            theday.setTime(ttt);
            var weekday = cweekday(theday.getDay());
            
            return weekday;
        }
    
        /**
         *获取当前时间和日期
         *@param srcDate: 1、源日期为日期格式的字符串 如:2015-11-12 11:34:45
         *                   2、源日期为Date类型 如:new Date();
         */
        function getNowDate(fmt){
            var nowDate=new Date();
            if(fmt==1){
                return dateFormat(nowDate, "2015-11-12 11:34:45");
            }else{
                return dateFormat(nowDate,"yyyy-MM-dd");
            }
        }
    
    
    
        var dateUtils = {
            "dateFormat" : dateFormat, // 根据格式显示日期
            "getMonthDays" : getMonthDays, //根据年份和月份计算出有多少天
            "getDateTime" : getDateTime, //获取时间毫秒数
            "cala"        : cala //根据日期计算该日为一周中的某天
        };
    
        //暴露对外的接口
        module.exports = dateUtils;
    });
  • 相关阅读:
    MySQL group_concat() 函数用法
    Git error The file will have its original line endings in your working directory
    SQL exists 基本用法
    (11) 严格模式(use strict)
    (10)变量提升
    (9)调试
    (8)正则表达式
    (7)类型转换
    (6)typeof, null, 和 undefined
    (5)运算符
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/5424883.html
Copyright © 2011-2022 走看看