js操作日期(函式,js版的dateAdd與dateDiff,四捨五入(round()方法)並保留小數點後N位的函式)
JS操作時間(函式)
- var myDate = new Date();
- myDate.getYear(); //獲取當前年份(2位)
- myDate.getFullYear(); //獲取完整的年份(4位,1970-????)
- myDate.getMonth(); //獲取當前月份(0-11,0代表1月)
- myDate.getDate(); //獲取當前日(1-31)
- myDate.getDay(); //獲取當前星期X(0-6,0代表星期天)
- myDate.getTime(); //獲取當前時間(從1970.1.1開始的毫秒數)
- myDate.getHours(); //獲取當前小時數(0-23)
- myDate.getMinutes(); //獲取當前分鐘數(0-59)
- myDate.getSeconds(); //獲取當前秒數(0-59)
- myDate.getMilliseconds(); //獲取當前毫秒數(0-999)
- myDate.toLocaleDateString(); //獲取當前日期
- var mytime=myDate.toLocaleTimeString(); //獲取當前時間
- myDate.toLocaleString( ); //獲取日期與時間
- 日期時間指令碼庫方法列表
- Date.prototype.isLeapYear 判斷閏年
- Date.prototype.Format 日期格式化
- Date.prototype.DateAdd 日期計算
- Date.prototype.DateDiff 比較日期差
- Date.prototype.toString 日期轉字串
- Date.prototype.toArray 日期分割為陣列
- Date.prototype.DatePart 取日期的部分資訊
- Date.prototype.MaxDayOfDate 取日期所在月的最大天數
- Date.prototype.WeekNumOfYear 判斷日期所在年的第幾周
- StringToDate 字串轉日期型
- IsValidDate 驗證日期有效性
- CheckDateTime 完整日期時間檢查
- daysBetween 日期天數差
- js程式碼:
- //---------------------------------------------------
- // 判斷閏年
- //---------------------------------------------------
- Date.prototype.isLeapYear = function()
- {
- return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
- }
- //---------------------------------------------------
- // 日期格式化
- // 格式 YYYY/yyyy/YY/yy 表示年份
- // MM/M 月份
- // W/w 星期
- // dd/DD/d/D 日期
- // hh/HH/h/H 時間
- // mm/m 分鐘
- // ss/SS/s/S 秒
- //---------------------------------------------------
- Date.prototype.Format = function(formatStr)
- {
- var str = formatStr;
- var Week = ['日','一','二','三','四','五','六'];
- str=str.replace(/yyyy|YYYY/,this.getFullYear());
- str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));
- str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());
- str=str.replace(/M/g,this.getMonth());
- str=str.replace(/w|W/g,Week[this.getDay()]);
- str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());
- str=str.replace(/d|D/g,this.getDate());
- str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());
- str=str.replace(/h|H/g,this.getHours());
- str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());
- str=str.replace(/m/g,this.getMinutes());
- str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());
- str=str.replace(/s|S/g,this.getSeconds());
- return str;
- }
- //+---------------------------------------------------
- //| 求兩個時間的天數差 日期格式為 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 ('-'));
- 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(Date.parse(dtTmp) + (1000 * Number));
- case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));
- case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));
- case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));
- case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
- 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();
- }
- }
- //+---------------------------------------------------
- //| 日期輸出字串,過載了系統的toString方法
- //+---------------------------------------------------
- Date.prototype.toString = function(showWeek)
- {
- var myDate= this;
- var str = myDate.toLocaleDateString();
- if (showWeek)
- {
- var Week = ['日','一','二','三','四','五','六'];
- str += ' 星期' + Week[myDate.getDay()];
- }
- return str;
- }
- //+---------------------------------------------------
- //| 日期合法性驗證
- //| 格式為: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(2003-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;
- }
- //+---------------------------------------------------
- //| 把日期分割成陣列
- //+---------------------------------------------------
- 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;
- }
- //+---------------------------------------------------
- //| 取得日期資料資訊
- //| 引數 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;
- }
- //+---------------------------------------------------
- //| 取得當前日期所在周是一年中的第幾周
- //+---------------------------------------------------
- Date.prototype.WeekNumOfYear = function()
- {
- var myDate = this;
- var ary = myDate.toArray();
- var year = ary[0];
- var month = ary[1]+1;
- var day = ary[2];
- document.write('< script language=VBScript/> /n');
- document.write('myDate = DateValue(''+month+'-'+day+'-'+year+'') /n');
- document.write('result = DatePart('ww', myDate) /n');
- document.write(' /n');
- return result;
- }
- //+---------------------------------------------------
- //| 字串轉成日期型別
- //| 格式 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;
- }
js版的dateAdd與dateDiff
- /* 得到日期年月日等加數字後的日期 */
- Date.prototype.dateAdd = function(interval,number)
- {
- var d = this;
- var k={'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date', 'h':'Hours', 'n':'Minutes', 's':'Seconds', 'ms':'MilliSeconds'};
- var n={'q':3, 'w':7};
- eval('d.set'+k[interval]+'(d.get'+k[interval]+'()+'+((n[interval]||1)*number)+')');
- return d;
- }
- /* 計算兩日期相差的日期年月日等 */
- Date.prototype.dateDiff = function(interval,objDate2)
- {
- var d=this, i={}, t=d.getTime(), t2=objDate2.getTime();
- i['y']=objDate2.getFullYear()-d.getFullYear();
- i['q']=i['y']*4+Math.floor(objDate2.getMonth()/4)-Math.floor(d.getMonth()/4);
- i['m']=i['y']*12+objDate2.getMonth()-d.getMonth();
- i['ms']=objDate2.getTime()-d.getTime();
- i['w']=Math.floor((t2+345600000)/(604800000))-Math.floor((t+345600000)/(604800000));
- i['d']=Math.floor(t2/86400000)-Math.floor(t/86400000);
- i['h']=Math.floor(t2/3600000)-Math.floor(t/3600000);
- i['n']=Math.floor(t2/60000)-Math.floor(t/60000);
- i['s']=Math.floor(t2/1000)-Math.floor(t/1000);
- return i[interval];
- }
dateAdd 方法
返回已新增指定時間間隔的日期物件。
dateObj.dateAdd(interval, number)
引數
dateObj
必選項。任意 Date 物件。
interval
必選項。字串表示式,表示要新增的時間間隔。有關數值,請參閱“設定”部分。
number
必選項。數值表示式,表示要新增的時間間隔的個數。數值表示式可以是正數(得到未來的日期)或負數(得到過去的日期)。
dateDiff 方法
返回兩個日期物件之間的時間間隔。
dateObj.dateDiff(interval, dateObj2)
引數
interval
必選項。字串表示式,表示用於計算 date1 和 date2 之間的時間間隔。有關數值,請參閱“設定”部分。
dateObj, dateObj2
必選項。日期物件。用於計算的兩個日期物件。
設定
interval 引數可以有以下值:
設定 | 描述 |
---|---|
y | 年 |
q | 季度 |
m | 月 |
d | 日 |
w | 周 |
h | 小時 |
n | 分鐘 |
s | 秒 |
ms | 毫秒 |
js獲取日期星期
- <mce:script language=javascript><!--
- //今天
- function showToDay()
- {
- var Nowdate=new Date();
- M=Number(Nowdate.getMonth())+1
- return Nowdate.getYear()+"-"+M+"-"+Nowdate.getDate();
- }
- //本週第一天
- function showWeekFirstDay()
- {
- var Nowdate=new Date();
- var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
- return WeekFirstDay;
- }
- //本週最後一天
- function showWeekLastDay()
- {
- var Nowdate=new Date();
- var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
- var WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);
- return WeekLastDay;
- }
- //本月第一天
- function showMonthFirstDay()
- {
- var Nowdate=new Date();
- var MonthFirstDay=new Date(Nowdate.getYear(),Nowdate.getMonth(),1);
- return MonthFirstDay;
- }
- //本月最後一天
- function showMonthLastDay()
- {
- var Nowdate=new Date();
- var MonthNextFirstDay=new Date(Nowdate.getYear(),Nowdate.getMonth()+1,1);
- var MonthLastDay=new Date(MonthNextFirstDay-86400000);
- return MonthLastDay;
- }
- //上月第一天
- function showPreviousFirstDay()
- {
- var MonthFirstDay=showMonthFirstDay()
- return new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()-1,1)
- }
- //上月最後一天
- function showPreviousLastDay()
- {
- var MonthFirstDay=showMonthFirstDay();
- return new Date(MonthFirstDay-86400000);
- }
- //上週第一天
- function showPreviousFirstWeekDay()
- {
- var WeekFirstDay=showWeekFirstDay()
- return new Date(WeekFirstDay-86400000*7)
- }
- //上週最後一天
- function showPreviousLastWeekDay()
- {
- var WeekFirstDay=showWeekFirstDay()
- return new Date(WeekFirstDay-86400000)
- }
- //上一天
- function showPreviousDay()
- {
- var MonthFirstDay=new Date();
- return new Date(MonthFirstDay-86400000);
- }
- //下一天
- function showNextDay()
- {
- var MonthFirstDay=new Date();
- return new Date((MonthFirstDay/1000+86400)*1000);
- }
- //下週第一天
- function showNextFirstWeekDay()
- {
- var MonthFirstDay=showWeekLastDay()
- return new Date((MonthFirstDay/1000+86400)*1000)
- }
- //下週最後一天
- function showNextLastWeekDay()
- {
- var MonthFirstDay=showWeekLastDay()
- return new Date((MonthFirstDay/1000+7*86400)*1000)
- }
- //下月第一天
- function showNextFirstDay()
- {
- var MonthFirstDay=showMonthFirstDay()
- return new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+1,1)
- }
- //下月最後一天
- function showNextLastDay()
- {
- var MonthFirstDay=showMonthFirstDay()
- return new Date(new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+2,1)-86400000)
- }
- function Date.prototype.toString(){
- return this.getFullYear()+"-"+(this.getMonth()+1)+"-"+this.getDate();
- }
- function setDate(num){
- if(num==1){
- document.all.dateDate.value=showMonthFirstDay();
- document.all.dateDate2.value=showMonthLastDay();
- }
- if(num==2){
- document.all.dateDate.value=showWeekFirstDay();
- document.all.dateDate2.value=showWeekLastDay();
- }
- if(num==3){
- document.all.dateDate.value=showToDay();
- document.all.dateDate2.value=showToDay();
- }
- if(num==4){
- document.all.dateDate.value=showPreviousFirstDay();
- document.all.dateDate2.value=showPreviousLastDay();
- }
- if(num==5){
- document.all.dateDate.value=showNextFirstDay();
- document.all.dateDate2.value=showNextLastDay();
- }
- if(num==6){
- document.all.dateDate.value=showPreviousFirstWeekDay();
- document.all.dateDate2.value=showPreviousLastWeekDay();
- }
- if(num==7){
- document.all.dateDate.value=showNextFirstWeekDay();
- document.all.dateDate2.value=showNextLastWeekDay();
- }
- if(num==8){
- document.all.dateDate.value=showPreviousDay();
- document.all.dateDate2.value=showPreviousDay();
- }
- if(num==9){
- document.all.dateDate.value=showNextDay();
- document.all.dateDate2.value=showNextDay();
- }
- }
- // --></mce:script>
- <input name=dateDate type=text>-><input name=dateDate2 type=text>
- <input name=haha type=button value="上一月" onclick=setDate(4)>
- <input name=haha type=button value="本月" onclick=setDate(1)>
- <input name=haha type=button value="下一月" onclick=setDate(5)>
- <input name=haha type=button value="上一週" onclick=setDate(6)>
- <input name=haha type=button value="本週" onclick=setDate(2)>
- <input name=haha type=button value="下一週" onclick=setDate(7)>
- <input name=haha type=button value="上一天" onclick=setDate(8)>
- <input name=haha type=button value="今天" onclick=setDate(3)>
- <input name=haha type=button value="下一天" onclick=setDate(9)>
- 可以靈活組合
相關文章
- MySQL 之 ROUND 函式四捨五入的陷阱MySql函式
- php中四捨五入的數學函式PHP函式
- sql 保留兩位小數+四捨五入SQL
- PHP 保留小數點後有效數字(四捨五入)PHP
- SQL Server日期計算(使用DATEADD和DATEDIFF函式)SQLServer函式
- 一個四捨五入函式 (轉)函式
- python 使用 round 方法保留 1 位和 2 位小數時沒有進行四捨五入Python
- js能夠四捨五入且能夠保留指定小數位數和千分位的程式碼JS
- 使用Oracle CEIL函式進行萬位四捨五入HGOracle函式
- js取整並保留兩位小數的方法JS
- 1026 程式執行時間(四捨五入,round函式)函式
- jQuery操作iframe中js函式的方法小結jQueryJS函式
- round函式與trunc函式的使用方法函式
- js日期轉換函式JS函式
- js實現的數字四捨五入效果JS
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- ORACLE單行函式與多行函式之四:日期函式示例Oracle函式
- JS函式的定義與呼叫方法JS函式
- js如何實現數字保留小數點後兩位小數JS
- JS的五種函式呼叫方式JS函式
- Mysql與Sql Server DATEDIFF函式MySqlServer函式
- JavaScript保留指定位數小數但是不進行四捨五入JavaScript
- Vue中使用js實現保留小數的奇入偶不入,四捨六入的計算VueJS
- js實現如何保留float浮點數小數點後兩位JS
- 字元函式、數字函式和日期函式字元函式
- datediff 函式導致溢位。用於分隔兩個日期/時間例項的日期部分的數字太大函式
- Js字串操作函式大全JS字串函式
- oracle中round()四捨五入Oracle
- Js保留兩位小數JS
- 那些關於JS四捨五入的事JS
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- js裡函式呼叫的四種模式JS函式模式
- 【JS拾遺】函式的引數JS函式
- (譯) 函式式 JS #2: 函式!函式JS
- Js常用的函式JS函式
- JS中的函式JS函式
- trunc與round函式函式
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式