1. [文件] yDate.js
/**
 * | yDate.js | Copyright (c) 2013 yao.yl | email: redrainyi@126.com | Date: 2012-09-03 |
 */
(function(global) {
 
    var objectPrototypeToString = Object.prototype.toString;
 
    var isDate = function(value) {
        return objectPrototypeToString.call(value) === '[object Date]';
    };
 
    var cloneDate = function(pDate, process) {
        var vDate = new Date(pDate.getTime());
        var year = vDate.getFullYear(), //
        month = vDate.getMonth(), //
        date = vDate.getDate(), //
        hours = vDate.getHours(), //
        minutes = vDate.getMinutes(), // 
        seconds = vDate.getSeconds();//
        (!!process) && process(vDate, year, month, date, hours, minutes, seconds);
        return vDate;
    };
 
    var parseDate = function(dateString, pattern) {
        try {
            var matchs1 = (pattern || (dateString.length === 10 ? 'yyyy-MM-dd' : 'yyyy-MM-dd HH:mm:ss')).match(/([yMdHsm])(\1*)/g);
            var matchs2 = dateString.match(/(\d)+/g);
            if (matchs1.length === matchs2.length) {
                var $d = new Date(1970, 0, 1);
                for (var i = 0; i < matchs1.length; i++) {
                    var $i = parseInt(matchs2[i], 10);
                    switch (matchs1[i].charAt(0) || '') {
                        case 'y' :
                            $d.setFullYear($i);
                            break;
                        case 'M' :
                            $d.setMonth($i - 1);
                            break;
                        case 'd' :
                            $d.setDate($i);
                            break;
                        case 'H' :
                            $d.setHours($i);
                            break;
                        case 'm' :
                            $d.setMinutes($i);
                            break;
                        case 's' :
                            $d.setSeconds($i);
                            break;
                        default :
                            //
                    }
                }
                return $d;
            }
        } catch (err) {
            alert(err)
        }
        return null;
    };
 
    var formatDate = (function() {
        var SIGN_RG = /([yMdHsm])(\1*)/g;
        function padding(s, len) {
            var len = len - (s + "").length;
            for (var i = 0; i < len; i++) {
                s = "0" + s;
            }
            return s;
        }
        return function(value, pattern) {
            if (!isDate(value)) {
                return '';
            }
            try {
                pattern = pattern || 'yyyy-MM-dd HH:mm:ss';
                return pattern.replace(SIGN_RG, function($0) {
                    switch ($0.charAt(0)) {
                        case 'y' :
                            return padding(value.getFullYear(), $0.length);
                        case 'M' :
                            return padding(value.getMonth() + 1, $0.length);
                        case 'd' :
                            return padding(value.getDate(), $0.length);
                        case 'w' :
                            return value.getDay() + 1;
                        case 'H' :
                            return padding(value.getHours(), $0.length);
                        case 'm' :
                            return padding(value.getMinutes(), $0.length);
                        case 's' :
                            return padding(value.getSeconds(), $0.length);
                        case 'q' :
                            return Math.floor((this.getMonth() + 3) / 3);
                        default :
                            return '';
                    }
                });
            } catch (err) {
                return '';
            }
        };
    })();
 
    var getActualMaximum = function(date) {
        var vDate = new Date(date.getTime());
        vDate.setMonth(vDate.getMonth() + 1);
        vDate.setDate(0);
        return vDate.getDate();
    }
 
    var YDate = function() {
        var p0 = arguments[0];
        var p1 = arguments[1];
        if (typeof p0 === 'number' && isFinite(value)) {
            this.vDate = new Date(p0);//millis
        } else if (isDate(p0)) {
            this.vDate = new Date(p0.getTime());
        } else if (typeof p0 === 'string') {
            if (typeof p1 === 'string' || typeof p1 === 'undefined') {
                this.vDate = parseDate(p0, p1);
            }
        } else if (arguments.length == 0) {
            this.vDate = new Date();
        } else {
            throw 'YDate Constructor Error!';
        }
        this.$year = this.vDate.getFullYear();
        this.$month = this.vDate.getMonth();
        this.$date = this.vDate.getDate();
        this.$hours = this.vDate.getHours();
        this.$minutes = this.vDate.getMinutes();
        this.$seconds = this.vDate.getSeconds();
        this.$day = this.vDate.getDay();
    };
 
    YDate.prototype = {
        plusYear : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setFullYear(year + value);
            }));
        },
        plusMonth : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setMonth(month + value);
            }));
        },
        plusDate : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setDate(date + value);
            }));
        },
        plusHours : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setHours(hours + value);
            }));
        },
        plusMinutes : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setMinutes(minutes + value);
            }));
        },
        plusSeconds : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setSeconds(seconds + value);
            }));
        },
        minusYear : function(value) {
            return this.plusYears(-value);
        },
        minusMonth : function(value) {
            return this.plusMonths(-value);
        },
        minusDate : function(value) {
            return this.plusDate(-value);
        },
        minusHours : function(value) {
            return this.plusHours(-value);
        },
        minusMinutes : function(value) {
            return this.plusMinutes(-value);
        },
        minusSeconds : function(value) {
            return this.plusSeconds(-value);
        },
        setYear : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setFullYear(value);
            }));
        },
        setMonth : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setMonth(value);http://www.huiyi8.com/clxgt/​
            }));窗帘效果图
        },
        setDate : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setDate(value);
            }));
        },
        setHours : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setHours(value);
            }));
        },
        setMinutes : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setMinutes(value);
            }));
        },
        setSeconds : function(value) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                vDate.setSeconds(value);
            }));
        },
        getYear : function() {
            return vDate.getFullYear();
        },
        getMonth : function() {
            return vDate.getMonth();
        },
        getDate : function() {
            return vDate.getDate();
        },
        getHours : function() {
            return vDate.getHours();
        },
        getMinutes : function() {
            return vDate.getMinutes();
        },
        getSeconds : function() {
            return vDate.getSeconds();
        },
        getDayOfWeek : function() {
            return vDate.getDay();
        },
        toDate : function() {
            return cloneDate(this.vDate);
        },
        calculate : function(expression) {
 
        },
        clone : function() {
            return new YDate(cloneDate(this.vDate));
        },
        getBegin : function(field) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                switch (field) {
                    case 'yyyy' ://year
                        vDate.setMonth(0);
                        vDate.setDate(1);
                        vDate.setHours(0);
                        vDate.setMinutes(0);
                        vDate.setSeconds(0);
                        break;
                    case 'MM' ://month
                        vDate.setDate(1);
                        vDate.setHours(0);
                        vDate.setMinutes(0);
                        vDate.setSeconds(0);
                    case 'dd' ://date
                        vDate.setHours(0);
                        vDate.setMinutes(0);
                        vDate.setSeconds(0);
                        break;
                    default :
                        //Ignore
                }
            }));
        },
        getEnd : function(field) {
            return new YDate(cloneDate(this.vDate, function(vDate, year, month, date, hours, minutes, seconds) {
                switch (field) {
                    case 'yyyy' ://year
                        vDate.setMonth(11);
                        vDate.setDate(31);
                        vDate.setHours(23);
                        vDate.setMinutes(59);
                        vDate.setSeconds(59);
                        break;
                    case 'MM' ://month
                        vDate.setDate(getActualMaximum(vDate));
                        vDate.setHours(23);
                        vDate.setMinutes(59);
                        vDate.setSeconds(59);
                    case 'dd' ://date
                        vDate.setHours(23);
                        vDate.setMinutes(59);
                        vDate.setSeconds(59);
                        break;
                    default :
                        //Ignore
                }
            }));
        },
        toString : function(pattern) {
            return formatDate(this.vDate, pattern);
        }
    };
    global.YDate = YDate;
})(window);
2. [代码]使用介绍

<!Doctype html>
<html>
    <head>
        <title>yDate.test</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
        <script type="text/javascript" src="yDate.js">
        </script>
    </head>
    <body>
        <script type="text/javascript">
 
//创建一个YDate日期对象
var date1 = new YDate('2013-01-01 11:50:20');
alert(date1.toString());
//获得JS Date对象
alert(date1.toDate());
 
var date2 = new YDate('2012-02-11');
alert(date2.toString());
//format日期对象
alert(date2.toString('yyyy年MM月dd日'));
 
//获得本月最后时刻的日期
var date3 = date2.getEnd('MM');//yyyy MM dd
alert(date3.toString());
 
//获得本年最初时刻的日期
var date4 = date2.getBegin('yyyy');
alert(date4.toString());
 
        </script>
    </body>
</html>

用于JS日期格式化,以及简单运算的Date包装工具类的更多相关文章

  1. 161226、js日期格式化

    JavaScript Date format(js日期格式化) 方法一:// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季 ...

  2. js日期格式化 扩展Date()

    javascript Date format(js日期格式化) 方法一: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(H/h).分(m).秒(s ...

  3. JS 日期格式化

    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"& ...

  4. 【JavaScript】 knockout.js 日期格式化借助【momentjs】

    源:Knockout.js 日期格式化 源:momentjs

  5. JS获取当前日期时间及JS日期格式化

    Js获取当前日期时间: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份( ...

  6. JS日期格式化(网上转载)

    JS日期格式化(网上转载) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <ht ...

  7. js 日期格式化函数(可自定义)

    js 日期格式化函数 DateFormat var DateFormat = function (datetime, formatStr) { var dat = datetime; var str ...

  8. 简单了解Spring中常用工具类_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...

  9. javascript常用开发笔记:一个简单强大的js日期格式化方法

    前言:一直没找到好用的javascript日期格式化工具,自己写了一个,方便以后复用 1.主要功能 (1)支持任意顺序的日期格式排列:yyyy=年,MM=月,dd=日,HH=时,mm=分,ss=秒,s ...

随机推荐

  1. idea 自定义工具栏

    问题:在笔记本上面使用idea的时候,有时候,需要使用 Ctrl+Alt+左箭头 /  Ctrl+Alt+右箭头 跳转到 上一次,查看代码的问题,然而存在快捷冲突的时候,很蛋疼.下面是解决办法. 效果 ...

  2. HTML 中 SELECT 选项分组

    <select name="viewType"> <option value selected>选择排序/显示方式</option> <o ...

  3. esrichina

    http://www.esrichina.com.cn/arcgis10.5/index.html#fillback=0100307b617b7b7b363736363039323733627b617 ...

  4. SpringMVC拦截器详解[附带源码分析](转)

    本文转自http://www.cnblogs.com/fangjian0423/p/springMVC-interceptor.html 感谢作者 目录 前言 重要接口及类介绍 源码分析 拦截器的配置 ...

  5. JAVA获取前一个月的第一天和最后一天

    package com.date; import java.text.SimpleDateFormat; import java.util.Calendar; /** * 默认显示前一个月的第一天和最 ...

  6. iOS WKWebView添加网页加载进度条(转)

    一.效果展示 WKWebProgressViewDemo.gif 二.主要步骤 1.添加UIProgressView属性 @property (nonatomic, strong) WKWebView ...

  7. [反汇编练习] 160个CrackMe之023

    [反汇编练习] 160个CrackMe之023. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  8. mysql修改删除列,删除有外键依赖的列

    –重命名表rename table t_softwareport to software_port; –建立外键alter table software_port add constraint fk_ ...

  9. 创建git仓库及简单操作命令

    1.把已有的项目代码纳入git管理 $ cd projectdir  #projectdir项目代码所在的文件夹 $ git init 2.新建的项目直接使用git管理 $ cd dir  #dir ...

  10. JDBC MYSQL 学习笔记(一) JDBC 基本使用

    1.JDBC简单介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范.称之为JDBC. JDBC全称为:Java Data Base Connectivity(java数据 ...