一、時間戳轉換日期
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 對象的原始值。