用于JS日期格式化,以及简单运算的Date包装工具类
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包装工具类的更多相关文章
- 161226、js日期格式化
JavaScript Date format(js日期格式化) 方法一:// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季 ...
- js日期格式化 扩展Date()
javascript Date format(js日期格式化) 方法一: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(H/h).分(m).秒(s ...
- JS 日期格式化
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"& ...
- 【JavaScript】 knockout.js 日期格式化借助【momentjs】
源:Knockout.js 日期格式化 源:momentjs
- JS获取当前日期时间及JS日期格式化
Js获取当前日期时间: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份( ...
- JS日期格式化(网上转载)
JS日期格式化(网上转载) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <ht ...
- js 日期格式化函数(可自定义)
js 日期格式化函数 DateFormat var DateFormat = function (datetime, formatStr) { var dat = datetime; var str ...
- 简单了解Spring中常用工具类_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口, ...
- javascript常用开发笔记:一个简单强大的js日期格式化方法
前言:一直没找到好用的javascript日期格式化工具,自己写了一个,方便以后复用 1.主要功能 (1)支持任意顺序的日期格式排列:yyyy=年,MM=月,dd=日,HH=时,mm=分,ss=秒,s ...
随机推荐
- 计算系数(codevs 1137)
题目描述 Description 给定一个多项式(ax + by)^k,请求出多项式展开后x^n y^m项的系数. 输入描述 Input Description 共一行,包含 5 个整数,分别为a,b ...
- 在echars上发布的半圆环形图
http://gallery.echartsjs.com/editor.html?c=xBJvoMcPfz&v=1
- 标准C程序设计七---03
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- 一个关于 jquery 和 php 的 jsonp 例子(与后台PHP成功通信)
<script> $(document).ready(function(){ $.ajax({ url:'http://localhost/test/jsonp.php', dataTyp ...
- crontab 实际的应用
每二天执行一次: 0 0 */2 * * command #注意分,时不能为星*,否则每分钟执行 每天零晨01,03执行: 0 01,03 * * * command 每2小时执行一次 0 */2 * ...
- spring工具类获取bean
import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebAppl ...
- 项目整理--Echarts前端后台的贯通写法
项目整理–Echarts前端后台的贯通写法 注:下面所有内容建立在FH admin开源框架和eharts插件基础上,建议观看本案例者进行了解. 业务逻辑 绘制两张图表.分别显示城市空间库和其它数据仓库 ...
- 高仿微信实现左滑显示删除button功能
在实际项目中删除列表中的某一项是很常见的功能.传统的做法能够使用长按监听器等,而如今流行的做法是左滑弹出删除button,微信,QQ等都是这么做的,以下做一个演示样例,代码例如以下: 主页面MainA ...
- MFC 小知识总结三
1 载入资源位图 1 获取程序实例 HINSTANCE m_hInst; m_hInst=AfxGetInstanceHandle(); //获取程 ...
- PHP开发的一些趣事
配置运行环境studyPhp: http://www.phpstudy.net/phpstudy/PhpStudy20180211.zip PHP运行环境:5.4 首先做的是一个表单测试吧 <! ...