關於日期的操作有兩種:操作日期時間,操作時間戳。下面是相關API
時間戳,通常是一個字符序列,唯一地標識某一刻的時間,是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總毫秒數。
一、創建Date()對象
var date1 = new Date();
// 參數是時間戳
var date2 = new Date(1486915200000);
// 參數是日期字符串
var date3 = new Date('2017/2/13');
// 參數是年、月、日...,其中年月日是必須的
var date4 = new Date('2017', '2', '13');
// Mon Feb 13 2017 18:09:31 GMT+0800 (中國標準時間)
console.log(date1)
// Mon Feb 13 2017 00:00:00 GMT+0800 (中國標準時間)
console.log(date2)
// Mon Feb 13 2017 00:00:00 GMT+0800 (中國標準時間)
console.log(date3)
// Mon Feb 13 2017 00:00:00 GMT+0800 (中國標準時間)
console.log(date4)
二、獲取時間
1、獲取當前時間
1.Date() 或者new Date()
// Mon Feb 13 2017 15:46:34 GMT+0800 (中國標準時間)
console.log(Date())
// Mon Feb 13 2017 15:46:34 GMT+0800 (中國標準時間)
console.log(new Date())
2.get系列方法,常用的是獲取年/月/日/時/分/秒,獲取當前時間要求日期對象為當前日期
getDate() 從 Date 對象返回一個月中的某一天 (1 ~ 31)。
getDay() 從 Date 對象返回一周中的某一天 (0 ~ 6)。
getMonth() 從 Date 對象返回月份 (0 ~ 11)。
getFullYear() 從 Date 對象以四位數字返回年份。注意不要使用getYear()。
getHours() 返回 Date 對象的小時 (0 ~ 23)。
getMinutes() 返回 Date 對象的分鐘 (0 ~ 59)。
getSeconds() 返回 Date 對象的秒數 (0 ~ 59)。
getMilliseconds() 返回 Date 對象的毫秒(0 ~ 999)。
var date = new Date()
var year = date.getFullYear()
// 2017年
console.log(year + '年')
2、獲取固定的時間
(1)new Date("2012/12/12");
(2)set系列方法,常用的是設置年/月/日/時/分/秒
setDate() 設置 Date 對象中月的某一天 (1 ~ 31)。
setMonth() 設置 Date 對象中月份 (0 ~ 11)。
setFullYear() 設置 Date 對象中的年份(四位數字)。注意不要使用setYear()方法。
setHours() 設置 Date 對象中的小時 (0 ~ 23)。
setMinutes() 設置 Date 對象中的分鐘 (0 ~ 59)。
setSeconds() 設置 Date 對象中的秒鐘 (0 ~ 59)。
setMilliseconds() 設置 Date 對象中的毫秒 (0 ~ 999)。
var date = new Date('2016/2/13')// Sat Feb 13 2016 00:00:00 GMT+0800 (中國標準時間)
console.log(date)
var date1 = new Date()
date1.setFullYear('2016')
// Sat Feb 13 2016 17:55:22 GMT+0800 (中國標準時間)
console.log(date1)
3.通過固定的時間戳獲取固定的時間
setTime() 以毫秒設置 Date 對象。
var date1 = new Date()
date1.setTime(1486915200000)
// Mon Feb 13 2017 00:00:00 GMT+0800 (中國標準時間)
console.log(date1)
4、獲取本地時間格式
toLocaleString() 根據本地時間格式,把 Date 對象轉換為字符串。
toLocaleTimeString() 根據本地時間格式,把 Date 對象的時間部分轉換為字符串。
toLocaleDateString() 根據本地時間格式,把 Date 對象的日期部分轉換為字符串。
var date2 = new Date()
// 2017/2/13 下午5:30:17
console.log(date2.toLocaleString())
// 下午5:30:17
console.log(date2.toLocaleTimeString())
// 2017/2/13
console.log(date2.toLocaleDateString())
三、獲取時間戳
1、獲取當前時間戳
Date.now()、+ new Date()、Date.parse(new Date())、new Date().getTime()
var date1 = Date.now()
var date2 = + new Date()
var date3 = Date.parse(new Date())
var date4 = new Date().getTime()
// 1486977645739
console.log(date1)
// 1486977645739
console.log(date2)
// 1486977645000
console.log(date3)
// 1486977645739
console.log(date4)
從上面輸出結果可以看到Date.parse()與其他不同,有點奇葩
2、獲取固定時間戳
Date.parse(new Date())、new Date().getTime()
var date2 = + new Date('2017/2/13')
var date3 = Date.parse(new Date('2017/2/13'))
var date4 = new Date('2017/2/13').getTime()
// 1486915200000
console.log(date2)
// 1486915200000
console.log(date3)
// 1486915200000
console.log(date4)
四、開發應用場景
1、自定義格式日期,如2015年3月19日 12:00:00這種格式
var date = new Date();
// 2017年02月13日 18:29:39
console.log(formatDateTime(date))
function formatDateTime(date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
var second = date.getSeconds();
second = second < 10 ? ('0' + second) : second;
return y + '年' + m + '月' + d+'日 '+h+':'+minute + ':' + second;};
2、倒計時效果
// 寫文章時時間為為2017/2/13
var endDate = new Date('2017/3/13')
// 實現距離距離2017/2/13 00:00:00的倒計時效果
var t = setInterval(function(){
var date = ShowCountDown(endDate,new Date());
console.log(date)
}, 1000);
function ShowCountDown(endDate,nowDate) {
var date = ''
var leftTime=endDate.getTime()-nowDate.getTime();
if (leftTime >= 0) {
var leftsecond = parseInt(leftTime/1000);
var day1=Math.floor(leftsecond/(60*60*24));
var hour=Math.floor((leftsecond-day1*24*60*60)/3600);
var minute=Math.floor((leftsecond-day1*24*60*60-hour*3600)/60);
var second=Math.floor(leftsecond-day1*24*60*60-hour*3600-minute*60);
day1 = day1 < 10 ? ('0' + day1) : day1;
hour = hour < 10 ? ('0' + hour) : hour;
minute = minute < 10 ? ('0' + minute) : minute;
second = second < 10 ? ('0' + second) : second;
date = "還剩:"+day1+"天"+hour+"小時"+minute+"分"+second+"秒";
}else{
clearInterval(t)
date = "還剩:00天00小時00分00秒";
}
return date
}