【永利皇宫402】时刻函数应用加,js时间日期格式化封装函数

永利皇宫402

  js固然提供了种种获取时间Date对象的不等属性方法,如:getDate
方法 | getDay
方法 | getFullYear
方法 |
getHours 方法 …

等等,可是却绝非像java那样提供三个方法来供用户来遵照自家提供的沙盘(pattern),来格式化钦命时期对象,所以自个儿就封装了几个小方法,只供大家闲来嘲弄-.-,有好的建议还望慷慨指荐哦。

复制代码 代码如下:

用到知识点:

// JavaScript Document
//—————————————————
// 决断闰年
//—————————————————
Date.prototype.isLeapYear = function() {
return
(0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
}

 arguments:该指标表示正在实施的函数和调用它的函数的参数。不可显式创制,纵然有length属性,且能像数组同样以“[]”语法格局取值,但它并非三个数组。 typeof
object :运算符,重临贰个用来代表说明式的数据类型的字符串。四种可能:
“number,” “string,” “boolean,” “object,” “function,” 和 “undefined.”。
object.constructor:表示创立对象的函数。object必须是目的或函数的名号。基础数据未有该属性。
exec
方法:用正则表明式情势在字符串中运维查找,并赶回满含该查找结果的一个数组。未有找到相配,则它回到
null。数组中同连串相配成分不会再一次出现。
str.split(Rex|str):以一个正则对象或子字符串,将三个字符串分割为子字符串,然后将结果作为字符串数组重临。
throw Error(‘msg’):抛出三个包括Message音讯的Error。throw
前边可跟别的表明式。
还恐怕有一部分for..in用法,三目运算符,substr那么些就不讲了,相比轻便。

//—————————————————
// 日期格式化
// 格式 YYYY/yyyy/YY/yy 表示年份
// MM/M 月份
// W/w 星期
// dd/DD/d/D 日期
// hh/HH/h/H 时间
// mm/m 分钟
// ss/SS/s/S 秒
//—————————————————
// 对Date的恢弘,将 Date 转化为钦点格式的String
// 月(M)、日(d)、时辰(h)、分(m)、秒(s)、季度(q) 能够用 1-2 个占位符,
// 年(y)能够用 1-4 个占位符,微秒(S)只可以用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format(“yyyy-MM-dd hh:mm:ss.S”) ==> 2006-07-02
08:09:04.423
// (new Date()).Format(“yyyy-M-d h:m:s.S”) ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function(fmt)
{ //author: meizz
var o = {
“M+” : this.getMonth()+1, //月份
“d+” : this.getDate(), //日
“h+” : this.getHours(), //小时
“H+” : this.getHours(), //小时
“m+” : this.getMinutes(), //分
“s+” : this.getSeconds(), //秒
“q+” : Math.floor((this.getMonth()+3)/3), //季度
“S” : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.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;
}

代码片段:

/**
* 对Date的扩张,将 Date 转化为内定格式的String
* 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)
能够用 1-2 个占位符
* 年(y)能够用 1-4 个占位符,纳秒(S)只可以用 1 个占位符(是 1-3 位的数字)
* eg:
* (new Date()).pattern(“yyyy-MM-dd hh:mm:ss.S”) ==> 2006-07-02
08:09:04.423
* (new Date()).pattern(“yyyy-MM-dd E HH:mm:ss”) ==> 2009-03-10 二
20:09:04
* (new Date()).pattern(“yyyy-MM-dd EE hh:mm:ss”) ==> 2009-03-10 周二
08:09:04
* (new Date()).pattern(“yyyy-MM-dd EEE hh:mm:ss”) ==> 2009-03-10
星期二 08:09:04
* (new Date()).pattern(“yyyy-M-d h:m:s.S”) ==> 2006-7-2 8:9:4.18
*/
Date.prototype.pattern=function(fmt) {
var o = {
“M+” : this.getMonth()+1, //月份
“d+” : this.getDate(), //日
“h+” : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
“H+” : this.getHours(), //小时
“m+” : this.getMinutes(), //分
“s+” : this.getSeconds(), //秒
“q+” : Math.floor((this.getMonth()+3)/3), //季度
“S” : this.getMilliseconds() //毫秒
};
var week = {
“0” : “/u65e5”,
“1” : “/u4e00”,
“2” : “/u4e8c”,
“3” : “/u4e09”,
“4” : “/u56db”,
“5” : “/u4e94”,
“6” : “/u516d”
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+””).substr(4 –
RegExp.$1.length));
}
if(/(E+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ?
(RegExp.$1.length>2 ? “/u661f/u671f” : “/u5468”) :
“”)+week[this.getDay()+””]);
}
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;
}

复制代码 代码如下:

//+—————————————————
//| 求七个小时的天命差 日期格式为 YYYY-MM-dd
//+—————————————————
function daysBetween(DateOne,DateTwo)
{
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf (‘-‘));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf
(‘-‘)+1);
var OneYear = DateOne.substring(0,DateOne.indexOf (‘-‘));

/**
 * ***js时间日期格式化*** <br>
 * <p>
 *
模版字符串接纳严峻格式,高出则会抛出极其,且每类格式只可出现三遍,如:yyyy-mm-yyyy
格式会抛万分
 * </p>
 * y-年    length: 2/4位 <br>
 * q-季度    length: 1位 <br>
 * M-月    length: 1~2位 <br>
 * d-日    length: 1~2位 <br>
 * H-时    length: 1~2位24小时制,h:12小时制 <br>
 * m-分    length: 1~2位 <br>
 * s-秒    length: 1~2位 <br>
 * S-毫秒 length: 固定1位
 * @param {Date类型对象} date
 * @param {String类型模板字符串} fmt
 * @return 格式化后时间日期字符串
 * @author lyt
 */
function DateFormat(date, fmt){
    if (arguments.length != 2) // 参数个数校验
        throw Error(‘arguments长度不合规’);
    if (!date || (typeof date != ‘object’) || (d.constructor != Date))
// 参数合法性校验
        throw Error(arguments[0] + ‘:类型不为Date类型’);
    if (/H+/.test(fmt) && /h+/.test(fmt))
        throw Error(“小时格式错误,同体系只好一而再出现二回!”);
    /* 模板参数校验,正则验证办法 */
    var verify = function(Rex ){
        var arr = new RegExp(雷克斯).exec(fmt); // 获得卓殊结果数组
        if (!arr) // 相称失利重临
            return “”;
        if (fmt.split(雷克斯).length > 2)  // 同一品种间隔出现每每
            throw Error(“fmt格式错误:同类型只可以延续出现三次!”);
        return arr[0];
    };
    /**
     * 提供月、天、时、分、秒通用相配替换
     * @param {对象o属性key} r
     * @param {r对应正则对象} rex
     **/
    var common = function(r, rex) {
        if(len !=1 && len !=2)
            throw Error(“月份格式错误:M只可以冒出61%次”);
        len == 2 ? fmt=fmt.replace(rex, o[r].length==1 ? “0”+o[r] :
o[r]) : fmt=fmt.replace(rex, o[r]);
    }
    var o = { // 数据存款和储蓄对象
        “y+”: date.getFullYear() + “”, // 年
        “q+”: Math.floor((date.getMonth() + 3) / 3), // 季度
        “M+”: date.getMonth() + 1 + “”, // 月
        “d+”: date.getDate() + “”, // 日
        “H+”: date.getHours() + “”, // 24时
        “h+”: date.getHours() + “”, // 12时
        “m+”: date.getMinutes() + “”, // 分
        “s+”: date.getSeconds() + “”, // 秒
        “S+”: date.getMilliseconds() // 毫秒
    }
    for(var r in o) {
        var rex, len, temp;
        rex = new RegExp(r);
        temp = verify(rex); // 相配所得字符串
        len = temp.length; // 长度
        if(!len || len == 0)
            continue;
        if(r == “y+”) {
            if(len !=2 && len != 4)
                throw Error(“年份格式错误:y只好冒出2/4次”);
            len == 2 ? fmt=fmt.replace(rex, o[r].substr(2,3)) :
fmt=fmt.replace(rex, o[r]);
        } else if(r == “q+”) {
            if(len != 1)
                throw Error(“季度格式错误:q只可以冒出1次”);
            fmt=fmt.replace(rex, o[r]);
        } else if(r == “h+”) {
            if(len !=1 && len !=2)
                throw Error(“小时格式错误:h只好出现58%次”);
            var h = (o[r] > 12 ? o[r]-12 : o[r]) + “”;
            len == 2 ? fmt=fmt.replace(rex, h.length==1 ? “0”+h : h) :
fmt=fmt.replace(rex, h);
        }  else if(r == “S+”) {
            if(len != 1)
                throw Error(“纳秒数格式错误:S只可以出现1次”);
            fmt=fmt.replace(rex, o[r]);
        }else {    // (r==”M+” || r==”d+” || r==”H+” || r==”m+” ||
r==”s+”)
            common(r, rex)
        } 
    }
    return fmt;
}

var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf (‘-‘));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf
(‘-‘)+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf (‘-‘));
var cha=((Date.parse(OneMonth+’/’+OneDay+’/’+OneYear)-
Date.parse(TwoMonth+’/’+TwoDay+’/’+TwoYear))/86400000);
return Math.abs(cha);
}

上几个示范效果,供大家参考:

//+—————————————————
//| 日期总结
//+—————————————————
Date.prototype.DateAdd = function(strInterval, Number) {
var dtTmp = this;
switch (strInterval) {
case ‘s’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()),
dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(),
dtTmp.getSeconds()+Number); //秒
case ‘n’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()),
dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes()+Number,
dtTmp.getSeconds()); //分
case ‘h’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()),
dtTmp.getDate(), dtTmp.getHours()+Number, dtTmp.getMinutes(),
dtTmp.getSeconds()); //时
case ‘d’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()),
dtTmp.getDate()+Number, dtTmp.getHours(), dtTmp.getMinutes(),
dtTmp.getSeconds()); //天
case ‘w’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()),
dtTmp.getDate()+Number*7, dtTmp.getHours(), dtTmp.getMinutes(),
dtTmp.getSeconds()); //周
case ‘q’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) +
Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(),
dtTmp.getSeconds());//季度
case ‘m’ :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) +
Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(),
dtTmp.getSeconds()); //月
case ‘y’ :return new Date((dtTmp.getFullYear() + Number),
dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(),
dtTmp.getSeconds()); //年
}
}

复制代码 代码如下:

//+—————————————————
//| 比较日期差 dtEnd 格式为日期型也许 有效日期格式字符串
//+—————————————————
Date.prototype.DateDiff = function(strInterval, dtEnd) {
var dtStart = this;
if (typeof dtEnd == ‘string’ )//如若是字符串调换为日期型
{
dtEnd = StringToDate(dtEnd);
}
switch (strInterval) {
case ‘s’ :return parseInt((dtEnd – dtStart) / 1000);
case ‘n’ :return parseInt((dtEnd – dtStart) / 60000);
case ‘h’ :return parseInt((dtEnd – dtStart) / 3600000);
case ‘d’ :return parseInt((dtEnd – dtStart) / 86400000);
case ‘w’ :return parseInt((dtEnd – dtStart) / (86400000 * 7));
case ‘m’ :return
(dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) –
(dtStart.getMonth()+1);
case ‘y’ :return dtEnd.getFullYear() – dtStart.getFullYear();
}
}

console.log(DateFormat(new
Date(),’yyyy年第q季度M月dd日HH时m分s秒S毫秒’));

//+—————————————————
//| 日期输出字符串,重载了系统的toString方法
//+—————————————————
Date.prototype.toString = function(showWeek)
{
var myDate= this;
var str = myDate.toLocaleDateString();
if (showWeek)
{
var Week = [‘日’,’一’,’二’,’三’,’四’,’五’,’六’];
str += ‘ 星期’ + Week[myDate.getDay()];
}
return str;
}

永利皇宫402 1

//+—————————————————
//| 日期合法性验证
//| 格式为:YYYY-MM-DD或YYYY/MM/DD
//+—————————————————
function IsValidDate(DateStr)
{
var sDate=DateStr.replace(/(^\s+|\s+$)/g,”); //去两侧空格;
if(sDate==”) return true;
//倘使格式知足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为”
//数据库中,合法日期可以是:YYYY-MM/DD(二〇〇〇-3/21),数据库会自行转变为YYYY-MM-DD格式
var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2
}[\-/]{ 1 }[\d]{ 1,2 }/g,”);
if (s==”) //表明格式满意YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D
{
var t=new Date(sDate.replace(/\-/g,’/’));
var ar = sDate.split(/[-/:]/);
if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] !=
t.getDate())
{
//alert(‘错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。’);
return false;
}
}
else
{
//alert(‘错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。’);
return false;
}
return true;
}

复制代码 代码如下:

//+—————————————————
//| 日期时间检查
//| 格式为:YYYY-MM-DD HH:MM:SS
//+—————————————————
function CheckDateTime(str)
{
var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2
}):(\d{ 1,2 })$/;
var r = str.match(reg);
if(r==null)return false;
r[2]=r[2]-1;
var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);
if(d.getFullYear()!=r[1])return false;
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
if(d.getHours()!=r[4])return false;
if(d.getMinutes()!=r[5])return false;
if(d.getSeconds()!=r[6])return false;
return true;
}

console.log(DateFormat(new
Date(),’yyyy年yy第q季度M月dd日HH时m分s秒S毫秒’));

//+—————————————————
//| 把日子分割成数组
//+—————————————————
Date.prototype.toArray = function()
{
var myDate = this;
var myArray = Array();
myArray[0] = myDate.getFullYear();
myArray[1] = myDate.getMonth();
myArray[2] = myDate.getDate();
myArray[3] = myDate.getHours();
myArray[4] = myDate.getMinutes();
myArray[5] = myDate.getSeconds();
return myArray;
}

永利皇宫402 2

//+—————————————————
//| 获得日期数据音讯
//| 参数 interval 表示数据类型
//| y 年 m月 d日 w星期 ww周 h时 n分 s秒
//+—————————————————
Date.prototype.DatePart = function(interval)
{
var myDate = this;
var partStr=”;
var Week = [‘日’,’一’,’二’,’三’,’四’,’五’,’六’];
switch (interval)
{
case ‘y’ :partStr = myDate.getFullYear();break;
case ‘m’ :partStr = myDate.getMonth()+1;break;
case ‘d’ :partStr = myDate.getDate();break;
case ‘w’ :partStr = Week[myDate.getDay()];break;
case ‘ww’ :partStr = myDate.WeekNumOfYear();break;
case ‘h’ :partStr = myDate.getHours();break;
case ‘n’ :partStr = myDate.getMinutes();break;
case ‘s’ :partStr = myDate.getSeconds();break;
}
return partStr;
}

复制代码 代码如下:

//+—————————————————
//| 取伏贴明日期所在月的最胎元气
//+—————————————————
Date.prototype.MaxDayOfDate = function()
{
var myDate = this;
var ary = myDate.toArray();
var date1 = (new Date(ary[0],ary[1]+1,1));
var date2 = date1.dateAdd(1,’m’,1);
var result =
dateDiff(date1.Format(‘yyyy-MM-dd’),date2.Format(‘yyyy-MM-dd’));
return result;
}

console.log(DateFormat(new
Date(),’yyyy年第q季度M月dd日Hh时m分s秒S毫秒’));

//+—————————————————
//| 字符串转成日期类型
//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd
//+—————————————————
function StringToDate(DateStr)
{
var converted = Date.parse(DateStr);
var myDate = new Date(converted);
if (isNaN(myDate))
{
//var delimCahar = DateStr.indexOf(‘/’)!=-1?’/’:’-‘;
var arys= DateStr.split(‘-‘);
myDate = new Date(arys[0],–arys[1],arys[2]);
}
return myDate;
}

永利皇宫402 3

页面验证代码

复制代码 代码如下:

复制代码 代码如下:

console.log(DateFormat(“作者不是时间对象”,’yyyy年第q季度M月dd日Hh时m分s秒S微秒’));

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“;
<html xmlns=”;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″
/>
<script src=”timedata.js” type=”text/javascript”></script>

永利皇宫402 4

<script type=”text/javascript”>
var nowtime= new Date();
function newdatetime(){
nowtime=nowtime.DateAdd(“h”,35);
str=nowtime.Format(“yyyy-MM-dd HH:mm:ss”);
alert(str);

复制代码 代码如下:

}
</script>

console.log(DateFormat(new
Date(),’yyyy年第q季度MMM月dd日HH时m分s秒S毫秒’));

<title>无标题文书档案</title>
</head>
<body>
<input type=”button” title=”格式化” onclick=”newdatetime()”
value=”点击查阅”/>
</body>
</html>

永利皇宫402 5

你只怕感兴趣的稿子:

  • js轻巧时间比较的艺术
  • 宏观合作的javascript时间格式化函数(比较实用)
  • js时间相比示例分享(日期相比)
  • JS相比相当多个日子大小的回顾示例代码
  • JavaScript
    相比时间大小的代码
  • javascript
    时间比较完毕代码
  • 正如精简的JavaScript 实时展示时间的脚本
    考订版
  • JavaScript比较当前岁月是或不是在内定时期段内的章程

其余职能就不一一列举了,感兴趣的可以把代码拷贝下来直接测验就行了,有任何BUG可能有待优化的地方请慷慨指正哦。

以上就是那款相当好用的封装函数的介绍了,是还是不是很实用吧,小友大家方可一直动用到自己的体系中。

你恐怕感兴趣的文章:

  • JS获取时间的相干函数及时间戳与时间日期之间的调换
  • js查看贰个函数的实践时间实例代码
  • JavaScript日期时间与时间戳的转换函数分享
  • Javascript获得当前光阴函数和岁月操作小结
  • javascript时间函数大全
  • JavaScript日期时间格式化函数共享
  • JavaScript格式化日期时间的措施和自定义格式化函数示例
  • 时间戳调换为时间
    年月日时间的JS函数
  • Js
    时间函数getYear()的运用难点研究
  • JavaScript中获得时间的函数集

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图