javaScript日期工具類(lèi)DateUtils詳解
本文實(shí)例為大家分享了javaScript日期工具類(lèi)的具體代碼,供大家參考,具體內(nèi)容如下
DateUtils = {
patterns: {
PATTERN_ERA: 'G', //Era 標(biāo)志符 Era strings. For example: "AD" and "BC"
PATTERN_YEAR: 'y', //年
PATTERN_MONTH: 'M', //月份
PATTERN_DAY_OF_MONTH: 'd', //月份的天數(shù)
PATTERN_HOUR_OF_DAY1: 'k', //一天中的小時(shí)數(shù)(1-24)
PATTERN_HOUR_OF_DAY0: 'H', //24小時(shí)制,一天中的小時(shí)數(shù)(0-23)
PATTERN_MINUTE: 'm', //小時(shí)中的分鐘數(shù)
PATTERN_SECOND: 's', //秒
PATTERN_MILLISECOND: 'S', //毫秒
PATTERN_DAY_OF_WEEK: 'E', //一周中對(duì)應(yīng)的星期,如星期一,周一
PATTERN_DAY_OF_YEAR: 'D', //一年中的第幾天
PATTERN_DAY_OF_WEEK_IN_MONTH: 'F', //一月中的第幾個(gè)星期(會(huì)把這個(gè)月總共過(guò)的天數(shù)除以7,不夠準(zhǔn)確,推薦用W)
PATTERN_WEEK_OF_YEAR: 'w', //一年中的第幾個(gè)星期
PATTERN_WEEK_OF_MONTH: 'W', //一月中的第幾星期(會(huì)根據(jù)實(shí)際情況來(lái)算)
PATTERN_AM_PM: 'a', //上下午標(biāo)識(shí)
PATTERN_HOUR1: 'h', //12小時(shí)制 ,am/pm 中的小時(shí)數(shù)(1-12)
PATTERN_HOUR0: 'K', //和h類(lèi)型
PATTERN_ZONE_NAME: 'z', //時(shí)區(qū)名
PATTERN_ZONE_VALUE: 'Z', //時(shí)區(qū)值
PATTERN_WEEK_YEAR: 'Y', //和y類(lèi)型
PATTERN_ISO_DAY_OF_WEEK: 'u',
PATTERN_ISO_ZONE: 'X'
},
week: {
'ch': {
"0": "\u65e5",
"1": "\u4e00",
"2": "\u4e8c",
"3": "\u4e09",
"4": "\u56db",
"5": "\u4e94",
"6": "\u516d"
},
'en': {
"0": "Sunday",
"1": "Monday",
"2": "Tuesday",
"3": "Wednesday",
"4": "Thursday",
"5": "Friday",
"6": "Saturday"
}
},
//獲取當(dāng)前時(shí)間
getCurrentTime: function() {
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1;
var day = today.getDate();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
var timeString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
return timeString;
},
/*
* 比較時(shí)間大小
* time1>time2 return 1
* time1<time2 return -1
* time1==time2 return 0
*/
compareTime: function(time1, time2) {
if(Date.parse(time1.replace(/-/g, "/")) > Date.parse(time2.replace(/-/g, "/"))) {
return 1;
} else if(Date.parse(time1.replace(/-/g, "/")) < Date.parse(time2.replace(/-/g, "/"))) {
return -1;
} else if(Date.parse(time1.replace(/-/g, "/")) == Date.parse(time2.replace(/-/g, "/"))) {
return 0;
}
},
//是否閏年
isLeapYear: function(year) {
return((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
},
//獲取某個(gè)月的天數(shù),從0開(kāi)始
getDaysOfMonth: function(year, month) {
return [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
},
getDaysOfMonth2: function(year, month) {
// 將天置為0,會(huì)獲取其上個(gè)月的最后一天
month = parseInt(month) + 1;
var date = new Date(year, month, 0);
return date.getDate();
},
/*距離現(xiàn)在幾天的日期:負(fù)數(shù)表示今天之前的日期,0表示今天,整數(shù)表示未來(lái)的日期
* 如-1表示昨天的日期,0表示今天,2表示后天
*/
fromToday: function(days) {
var today = new Date();
today.setDate(today.getDate() + days);
var date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate();
return date;
},
/**
* 日期時(shí)間格式化
* @param {Object} dateTime 需要格式化的日期時(shí)間
* @param {String} pattern 格式化的模式,如yyyy-MM-dd hh(HH):mm:ss.S a k K E D F w W z Z
*/
formt: function(dateTime, pattern) {
var date = new Date(dateTime);
if(Bee.StringUtils.isBlank(pattern)) {
return date.toLocaleString();
}
return pattern.replace(/([a-z])\1*/ig, function(matchStr, group1) {
var replacement = "";
switch(group1) {
case Bee.DateUtils.patterns.PATTERN_ERA: //G
break;
case Bee.DateUtils.patterns.PATTERN_WEEK_YEAR: //Y
case Bee.DateUtils.patterns.PATTERN_YEAR: //y
replacement = date.getFullYear();
break;
case Bee.DateUtils.patterns.PATTERN_MONTH: //M
var month = date.getMonth() + 1;
replacement = (month < 10 && matchStr.length >= 2) ? "0" + month : month;
break;
case Bee.DateUtils.patterns.PATTERN_DAY_OF_MONTH: //d
var days = date.getDate();
replacement = (days < 10 && matchStr.length >= 2) ? "0" + days : days;
break;
case Bee.DateUtils.patterns.PATTERN_HOUR_OF_DAY1: //k(1~24)
var hours24 = date.getHours();
replacement = hours24;
break;
case Bee.DateUtils.patterns.PATTERN_HOUR_OF_DAY0: //H(0~23)
var hours24 = date.getHours();
replacement = (hours24 < 10 && matchStr.length >= 2) ? "0" + hours24 : hours24;
break;
case Bee.DateUtils.patterns.PATTERN_MINUTE: //m
var minutes = date.getMinutes();
replacement = (minutes < 10 && matchStr.length >= 2) ? "0" + minutes : minutes;
break;
case Bee.DateUtils.patterns.PATTERN_SECOND: //s
var seconds = date.getSeconds();
replacement = (seconds < 10 && matchStr.length >= 2) ? "0" + seconds : seconds;
break;
case Bee.DateUtils.patterns.PATTERN_MILLISECOND: //S
var milliSeconds = date.getMilliseconds();
replacement = milliSeconds;
break;
case Bee.DateUtils.patterns.PATTERN_DAY_OF_WEEK: //E
var day = date.getDay();
replacement = Bee.DateUtils.week['ch'][day];
break;
case Bee.DateUtils.patterns.PATTERN_DAY_OF_YEAR: //D
replacement = Bee.DateUtils.dayOfTheYear(date);
break;
case Bee.DateUtils.patterns.PATTERN_DAY_OF_WEEK_IN_MONTH: //F
var days = date.getDate();
replacement = Math.floor(days / 7);
break;
case Bee.DateUtils.patterns.PATTERN_WEEK_OF_YEAR: //w
var days = Bee.DateUtils.dayOfTheYear(date);
replacement = Math.ceil(days / 7);
break;
case Bee.DateUtils.patterns.PATTERN_WEEK_OF_MONTH: //W
var days = date.getDate();
replacement = Math.ceil(days / 7);
break;
case Bee.DateUtils.patterns.PATTERN_AM_PM: //a
var hours24 = date.getHours();
replacement = hours24 < 12 ? "\u4e0a\u5348" : "\u4e0b\u5348";
break;
case Bee.DateUtils.patterns.PATTERN_HOUR1: //h(1~12)
var hours12 = date.getHours() % 12 || 12; //0轉(zhuǎn)為12
replacement = (hours12 < 10 && matchStr.length >= 2) ? "0" + hours12 : hours12;
break;
case Bee.DateUtils.patterns.PATTERN_HOUR0: //K(0~11)
var hours12 = date.getHours() % 12;
replacement = hours12;
break;
case Bee.DateUtils.patterns.PATTERN_ZONE_NAME: //z
replacement = Bee.DateUtils.getZoneNameValue(date)['name'];
break;
case Bee.DateUtils.patterns.PATTERN_ZONE_VALUE: //Z
replacement = Bee.DateUtils.getZoneNameValue(date)['value'];
break;
case Bee.DateUtils.patterns.PATTERN_ISO_DAY_OF_WEEK: //u
break;
case Bee.DateUtils.patterns.PATTERN_ISO_ZONE: //X
break;
default:
break;
}
return replacement;
});
},
/**
* 計(jì)算一個(gè)日期是當(dāng)年的第幾天
* @param {Object} date
*/
dayOfTheYear: function(date) {
var obj = new Date(date);
var year = obj.getFullYear();
var month = obj.getMonth(); //從0開(kāi)始
var days = obj.getDate();
var daysArr = [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for(var i = 0; i < month; i++) {
days += daysArr[i];
}
return days;
},
//獲得時(shí)區(qū)名和值
getZoneNameValue: function(dateObj) {
var date = new Date(dateObj);
date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
var arr = date.toString().match(/([A-Z]+)([-+]\d+:?\d+)/);
var obj = {
'name': arr[1],
'value': arr[2]
};
return obj;
}
};
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS使用正則截取兩個(gè)字符串之間的字符串實(shí)現(xiàn)方法詳解
這篇文章主要介紹了JS使用正則截取兩個(gè)字符串之間的字符串實(shí)現(xiàn)方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了JS正則匹配與截取操作的實(shí)現(xiàn)技巧,并拓展分析了數(shù)量詞的概念與功能,需要的朋友可以參考下2017-01-01
JavaScript獲取對(duì)象在頁(yè)面中位置坐標(biāo)的方法
這篇文章主要介紹了JavaScript獲取對(duì)象在頁(yè)面中位置坐標(biāo)的方法,涉及JavaScript操作頁(yè)面元素屬性的相關(guān)技巧,需要的朋友可以參考下2016-02-02
js模仿html5 placeholder適應(yīng)于不支持的瀏覽器
html5原生支持placeholder,對(duì)于不支持的瀏覽器(ie)可用js模擬實(shí)現(xiàn),不要走開(kāi),接下來(lái)為您詳細(xì)介紹實(shí)現(xiàn)方法2013-01-01
JavaScript+CSS實(shí)現(xiàn)仿天貓側(cè)邊網(wǎng)頁(yè)菜單效果
這篇文章主要介紹了JavaScript+CSS實(shí)現(xiàn)仿天貓側(cè)邊網(wǎng)頁(yè)菜單效果,涉及javascript鼠標(biāo)事件及頁(yè)面元素動(dòng)態(tài)操作的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
javascript 函數(shù)聲明與函數(shù)表達(dá)式的區(qū)別介紹
javascript中的函數(shù)聲明與函數(shù)表達(dá)式使用比較頻繁,可能很多的朋友都不知道他們之間的區(qū)別,在此為大家詳細(xì)介紹下,希望對(duì)大家有所幫助2013-10-10
JS使用AudioContext實(shí)現(xiàn)音頻流實(shí)時(shí)播放
這篇文章主要為大家詳細(xì)介紹了JavaScript如何使用AudioContext實(shí)現(xiàn)音頻流實(shí)時(shí)播放功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
原生Js實(shí)現(xiàn)元素漸隱/漸現(xiàn)(原理為修改元素的css透明度)
大家經(jīng)常看到網(wǎng)頁(yè)里圖片漸變顯示,自己寫(xiě)一個(gè)。原理很簡(jiǎn)單就是修改元素的css透明度,具體實(shí)現(xiàn)代碼如下,感興趣的各位可以參考下哈,希望對(duì)大家有所幫助2013-06-06

