码迷,mamicode.com
首页 > Web开发 > 详细

js日期工具

时间:2016-04-23 18:06:10      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

/**
 * 日期工具类
 */
define(function(require, exports, module) {
    var constants = require("constants"); // 常量类
    
    /**
     * 描述: 把日期格式字符串转换成js Date类型
     *
     * @author 汪卫中
     * @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];
    }

    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;
    }
    var dateUtils = {
        "dateFormat" : dateFormat, // 根据格式显示日期
        "getMonthDays" : getMonthDays, //根据年份和月份计算出有多少天
        "getDateTime" : getDateTime, //获取时间毫秒数
        "cala"        : cala //根据日期计算该日为一周中的某天
    };

    //暴露对外的接口
    module.exports = dateUtils;
});

js日期工具

标签:

原文地址:http://www.cnblogs.com/wangzhuxing/p/5424883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!