Date
- GMT:是指位于英国伦敦郊区的皇家格林尼治天文台当地的标准时间,因为本初子午线被定义为通过那里的经线
- UTC:协调世界时(英语:Coordinated Universal Time,法语:Temps Universel Coordonné,简称UTC)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。
- CST:北京时间,又名中国标准时间,是中国大陆的标准时间,比世界协调时快八小时(即UTC+8),与香港、澳门、台北、吉隆坡、新加坡等地的标准时间相同。
var d = new Date()
console.log(d.toString()) //"Sun Mar 25 2018 21:37:06 GMT+0800 (中国标准时间)"
console.log(d.toGMTString()) //"Sun, 25 Mar 2018 13:37:06 GMT"
console.log(d.toUTCString()) //"Sun, 25 Mar 2018 13:37:06 GMT"
console.log(d.toISOString())//"2018-03-25T13:37:06.061Z"
方法
get
var d = new Date()
d.getTime() //返回实例对象距离1970年1月1日00:00:00对应的毫秒数
d.getDate() //返回实例对象对应每个月的几号(从1开始)
d.getDay() //返回星期,星期日为0,星期一为1,以此类推
d.getFullYear() //返回四位的年份
d.getMonth() //返回月份(0表示1月,11表示12月)
d.getHours() //返回小时(0~23)
d.getMilliseconds() //返回毫秒(0-999)
d.getMinutes() //返回分钟(0-59)
d.getSeconds() //返回秒(0-59)
set
-
Date.prototype.setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳
-
Date.prototype.setFullYear(year [, month, date]):设置四位年份
-
Date.prototype.setHours(hour [, min, sec, ms]):设置小时(0-23)
-
Date.prototype.setMilliseconds():设置毫秒(0-999)
-
Date.prototype.setMinutes(min [, sec, ms]):设置分钟(0-59)
-
Date.prototype.setMonth(month [, date]):设置月份(0-11)
-
Date.prototype.setSeconds(sec [, ms]):设置秒(0-59)
-
Date.prototype.setTime(milliseconds):设置毫秒时间戳
Date.now()
now方法返回当前距离1970年1月1日00:00:00的毫秒数
Date.now(); // 1427974222853
Date.parse()
parse方法用来解析日期字符串,返回距离1970年1月1日 00:00:00的毫秒数
日期字符串的格式应该完全或者部分符合YYYY-MM-DDTHH:mm:ss.sssZ格式,Z表示时区,是可选的
如果解析失败,返回NaN
Date.parse("January 26, 2011 13:51:50")
Date.parse("Mon, 25 Dec 1995 13:30:00 GMT")
Date.parse("Mon, 25 Dec 1995 13:30:00 +0430")
Date.parse("2011-10-10")
Date.parse("2011-10-10 20:00:00")
Date.parse("2011-10-10T14:48:00")
注意:在新建日期对象时,如果不设置时间,则认为创建的是 utc 的0点,也就是北京时间8点。 如果设置时间,则是北京时间当前时间。
new Date('2018-01-01') // Mon Jan 01 2018 08:00:00 GMT+0800 (CST)
new Date('2018-01-01 00:00:00') //Mon Jan 01 2018 00:00:00 GMT+0800 (CST)
范例:
写一个函数getChIntv,获取从当前时间到指定日期的间隔时间
function getChIntv(str){
var timeEnd = Date.parse(str);
var timeStart = Date.now();
var interval = Math.abs(timeEnd - timeStart);
var totalsecond = Math.floor(interval/1000);
var second = Math.floor(totalsecond%60);
var minute = Math.floor(totalsecond/60)%60;
var hour = Math.floor(totalsecond/3600)%24;
var day = Math.floor(totalsecond/(3600*24));
return '距这天有' + day + '天' + hour + '小时' + minute + '分' + second + '秒';
}
var str = getChIntv("1994-07-26");
console.log(str); //距我的生日还有241天21小时27分56秒
把hh-mm-dd格式数字日期改成中文日期
function getChsDate(datestr){
var arr = datestr.split("-");
var dic = ["零","一","二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","二十一","二十二","二十三","二十四","二十五","二十六","二十七","二十八","二十九","三十","三十一"]
var year = " ";
var month = " ";
var day = " ";
for(var i = 0; i < arr[0].length; i++){
year+=dic[arr[0][i]];
}
month = dic[parseInt(arr[1])];
day = dic[parseInt(arr[2])];
return year + "年" +month +"月" + day +"日";
}
var str = getChsDate('2015-01-08');
console.log(str); // 二零一五年一月八日
//写一个函数,
// 参数为时间对象毫秒数的字符串格式,
// 返回值为字符串。假设参数为时间对象毫秒数t,
// 根据t的时间分别返回如下字符串
//刚刚( t 距当前时间不到1分钟时间间隔)
// 3分钟前 (t距当前时间大于等于1分钟,小于1小时)
// 8小时前 (t 距离当前时间大于等于1小时,小于24小时)
// 3天前 (t 距离当前时间大于等于24小时,小于30天)
// 2个月前 (t 距离当前时间大于等于30天小于12个月)
// 8年前 (t 距离当前时间大于等于12个月)
function friendlyDate(time){
var now =Date.now();
var interval=Math.abs(now-time);
if(interval < 1000*60){
return '刚刚';
}else if( interval<1000*60*60){
return "3分钟前";
}else if(interval<1000*60*60*24){
return "8小时前";
}else if(interval<1000*60*60*24*30){
return "3天前";
}else if(interval<1000*60*60*24*30*12){
return "2个月前";
}else{
return " 8年前";
}
}
var str = friendlyDate( '10000001484286699422' );
console.log(str); // 1分钟前
var str2 = friendlyDate('10000001483941245793');
console.log(str2); //4天前
网友评论