一、時間戳轉換日期
1 function formatDate(datetime) { 2 // 獲取年月日時分秒值 slice(-2)過濾掉大於10日期前面的0 3 var year = datetime.getFullYear(), 4 month = ("0" + (datetime.getMonth() + 1)).slice(-2), 5 date = ("0" + datetime.getDate()).slice(-2), 6 hour = ("0" + datetime.getHours()).slice(-2), 7 minute = ("0" + datetime.getMinutes()).slice(-2), 8 second = ("0" + datetime.getSeconds()).slice(-2); 9 // 拼接 10 var result = year + "-"+ month +"-"+ date +" "+ hour +":"+ minute +":" + second; 11 // 返回 12 return result; 13 } 14 15 var date = new Date(); 16 console.log(formatDate(date)); // 2018-05-26 23:09:26
二、合同日期計算
根據開始日期和期限,計算結束日期
1 //date: 日期字符串yyyy-MM-dd,如:2016-02-14 2 //years:年份,正整數字符串 3 //返回日期字符串yyyy-MM-dd,如:2016-02-14 4 function dateAddYear(date, years) { 5 var now = new Date(date); 6 var intYear = now.getFullYear() + parseInt(years); 7 var intMonth = now.getMonth() + 1; //正常的月份, 8 var intDay = now.getDate() - 1; //日期-1 9 if (intDay == 0) { 10 intMonth--; //減少一個月 11 if (intMonth == 0) { 12 intYear--; //0:減少一年 13 intMonth = 12; 14 intDay = 31; 15 } 16 else if (intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) { 17 intDay = 30; //4,6,9,11:30天 18 } 19 else if (intMonth == 2) { 20 intDay = 28; //2:28/29 21 if (intYear % 4 == 0) { 22 intDay = 29; 23 } 24 } else { 25 intDay = 31; //1,3,5,7,8,10,12 :31天 26 } 27 } 28 29 var strMonth = (intMonth) < 10 ? "0" + (intMonth).toString() : (intMonth).toString(); 30 var strDay = (intDay) < 10 ? "0" + (intDay).toString() : (intDay).toString(); 31 var strEndDate = intYear + "-" + strMonth + "-" + strDay; 32 return strEndDate; 33 } 34 35 console.log(dateAddYear('2018-6-10','2')); // 2020-06-09
三、根據開始日期,計算count天過后的日期
beginDate是開始日期,字符串格式
count是指多少天,整型數
注意:setDate和getDate結合使用
date.setDate(date.getDate() + count);
1 function calculateDate(beginDate,count){ 2 var date = new Date(beginDate); 3 date.setDate(date.getDate() + count); 4 var year = date.getFullYear(); 5 var month = ("0" + (date.getMonth()+1)).slice(-2); 6 var day = ("0" + date.getDate()).slice(-2); 7 var hours = ("0" + date.getHours()).slice(-2); 8 var minute = ("0" + date.getMinutes()).slice(-2); 9 var second = ("0" + date.getSeconds()).slice(-2); 10 11 var endDate = year + "-"+ month +"-"+ day +" "+ hours +":"+ minute +":" + second; 12 13 return endDate; 14 } 15 16 console.log(calculateDate('2018-5-26 23:50:32',30)); // 2018-06-25 23:50:32
四、計算n月之后的日期
1 function addMonth(date,monthNum){ 2 var str = date.split('-'); 3 var day = parseInt(str[2]); 4 var nextMonth = new Date( str[0], parseInt(str[1])+monthNum, 0); 5 var max = nextMonth.getDate(); 6 endDate = new Date( str[0],str[1]-1+monthNum,day>max? max: day ); 7 return endDate.toLocaleDateString().match(/\d+/g).join('-'); 8 } 9 10 console.log(addMonth("2018-12-12",12));
1 function addMonth(date,monthNum){ 2 3 var str = date.split('-'); 4 var oldDate = new Date(str[0], parseInt(str[1]), 0); 5 var oldDay = oldDate.getDate(); 6 console.log(oldDay); 7 var day = parseInt(str[2]); 8 var nextMonth = new Date( str[0], parseInt(str[1])+monthNum, 0); 9 var max = nextMonth.getDate(); 10 if(day >28 && day < 31){ 11 max = max - (oldDay - day); 12 console.log(max); 13 } 14 endDate = new Date( str[0],str[1]-1+monthNum,day>max? max: day ); 15 return endDate.toLocaleDateString().match(/\d+/g).join('-'); 16 } 17 18 console.log(addMonth("2018-1-27",1));
五、常用的Date對象方法
- Date() 返回當日的日期和時間。
- getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。
- getDay() 從 Date 對象返回一周中的某一天 (0 ~ 6)。
- getMonth() 從 Date 對象返回月份 (0 ~ 11)。
- getFullYear() 從 Date 對象以四位數字返回年份。
- getYear() 請使用 getFullYear() 方法代替。
- getHours() 返回 Date 對象的小時 (0 ~ 23)。
- getMinutes() 返回 Date 對象的分鍾 (0 ~ 59)。
- getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。
- getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。
- getTime() 返回 1970 年 1 月 1 日至今的毫秒數。
- getTimezoneOffset() 返回本地時間與格林威治標准時間 (GMT) 的分鍾差。
- getUTCDate() 根據世界時從 Date 對象返回月中的一天 (1 ~ 31)。
- getUTCDay() 根據世界時從 Date 對象返回周中的一天 (0 ~ 6)。
- getUTCMonth() 根據世界時從 Date 對象返回月份 (0 ~ 11)。
- getUTCFullYear() 根據世界時從 Date 對象返回四位數的年份。
- getUTCHours() 根據世界時返回 Date 對象的小時 (0 ~ 23)。
- getUTCMinutes() 根據世界時返回 Date 對象的分鍾 (0 ~ 59)。
- getUTCSeconds() 根據世界時返回 Date 對象的秒鍾 (0 ~ 59)。
- getUTCMilliseconds() 根據世界時返回 Date 對象的毫秒(0 ~ 999)。
- parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒數。
- setDate() 設置 Date 對象中月的某一天 (1 ~ 31)。
- setMonth() 設置 Date 對象中月份 (0 ~ 11)。
- setFullYear() 設置 Date 對象中的年份(四位數字)。
- setYear() 請使用 setFullYear() 方法代替。
- setHours() 設置 Date 對象中的小時 (0 ~ 23)。
- setMinutes() 設置 Date 對象中的分鍾 (0 ~ 59)。
- setSeconds() 設置 Date 對象中的秒鍾 (0 ~ 59)。
- setMilliseconds() 設置 Date 對象中的毫秒 (0 ~ 999)。
- setTime() 以毫秒設置 Date 對象。
- setUTCDate() 根據世界時設置 Date 對象中月份的一天 (1 ~ 31)。
- setUTCMonth() 根據世界時設置 Date 對象中的月份 (0 ~ 11)。
- setUTCFullYear() 根據世界時設置 Date 對象中的年份(四位數字)。
- setUTCHours() 根據世界時設置 Date 對象中的小時 (0 ~ 23)。
- setUTCMinutes() 根據世界時設置 Date 對象中的分鍾 (0 ~ 59)。
- setUTCSeconds() 根據世界時設置 Date 對象中的秒鍾 (0 ~ 59)。
- setUTCMilliseconds() 根據世界時設置 Date 對象中的毫秒 (0 ~ 999)。
- toSource() 返回該對象的源代碼。
- toString() 把 Date 對象轉換為字符串。
- toTimeString() 把 Date 對象的時間部分轉換為字符串。
- toDateString() 把 Date 對象的日期部分轉換為字符串。
- toGMTString() 請使用 toUTCString() 方法代替。
- toUTCString() 根據世界時,把 Date 對象轉換為字符串。
- toLocaleString() 根據本地時間格式,把 Date 對象轉換為字符串。
- toLocaleTimeString() 根據本地時間格式,把 Date 對象的時間部分轉換為字符串。
- toLocaleDateString() 根據本地時間格式,把 Date 對象的日期部分轉換為字符串。
- UTC() 根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數。
- valueOf() 返回 Date 對象的原始值。