[js] Date
#
Date.prototype.valueOf()与 Date.prototype.getTime() 功能相等
1 <head> 2 <meta charset="UTF-8"> 3 <title></title> 4 <meta name="viewport" content="width=device-width, user-scalable=no"> 5 </head> 6 7 <body> 8 9 <div id="part1" style="height:2000px;overflow: auto;background: lightblue;"> 10 </div> 11 <div id="part2" style="height:3000px;overflow: auto;background:lightcoral;"> 12 </div> 13 <script> 14 console.log(new Date()); 15 //不同浏览器显示格式略有不同 16 17 console.error('Date.parse()'); 18 console.log(Date.parse("May 25, 2004")); //1085414400000 19 //Date.parse()方式 20 //转换为 Unix 时间,只识别 21 //月/日/年 22 //英文月份 日,年 23 //new Date()时间戳 24 // 这几种类型的时间戳,一定要有 日 25 26 var a = new Date(Date.parse("May 25, 2004")); 27 var b = new Date("May 25, 2004"); //会在后台调用Date.parse() 28 console.log(a); 29 console.log(b); 30 //a b 等价。 31 32 console.error('Date.UTC()'); 33 var y2k = new Date(Date.UTC(2000, 0)); //基于0-11的月份,0-23的小时 34 //January 1, 2000 at midnight 35 console.warn(Date.UTC(2000, 0));//转换为 Unix 时间 36 console.error(y2k); //new Date()时间戳 37 //Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间) 38 console.log(y2k.toUTCString()); 39 //GMT时间 Sat, 01 Jan 2000 00:00:00 GMT 40 41 var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));//年,月,日,时,分,秒 42 //这种,号分割的方式会被识别为 Date.UTC() 方式 43 //May 5, 2005 at 5:55:55 PM GMT 44 console.info(allFives); //new Date()时间戳 45 console.log(allFives.toUTCString()); 46 //GMT时间 Thu, 05 May 2005 17:55:55 GMT 47 48 var y2k = new Date(2000, 0); 49 //January 1, 2000 at midnight in local time 50 console.log(y2k); //new Date()时间戳 51 console.log(y2k.toLocaleString()); 52 //本地时间 2000/1/1 上午12:00:00 53 54 var allFives = new Date(2005, 4, 5, 17, 55, 55); 55 //May 5, 2005 at 5:55:55 PM in local time 56 console.log(allFives); //new Date()时间戳 57 console.log(allFives.toLocaleString()); 58 //本地时间 2005/5/5 下午5:55:55 59 60 var date1 = new Date(2007, 0, 1);//Date.UTC()方式 61 //January 1, 2007 62 var date2 = new Date(2007, 1, 1);//Date.UTC()方式 63 //February 1, 2007 64 console.log(date1 < date2); //true 快速比较 65 console.log(date1 > date2); //false 66 67 console.error('toxx'); 68 console.warn(date1);//new Date()时间戳 69 //Mon Jan 01 2007 00:00:00 GMT+0800 (中国标准时间) 70 console.error(date1.toString());//new Date()时间戳? 71 //Mon Jan 01 2007 00:00:00 GMT+0800 (中国标准时间) 72 console.error(date1.toUTCString());//GMT时间 73 //Sun, 31 Dec 2006 16:00:00 GMT 74 console.error(date1.toLocaleString());//本地时间 75 //2007/1/1 上午12:00:00 76 console.error(date1.toDateString());//new Date()时间戳里的日期部分 77 //Mon Jan 01 2007 78 console.error(date1.toTimeString());//new Date()时间戳里的时间部分 79 //00:00:00 GMT+0800 (中国标准时间) 80 console.error(date1.toLocaleDateString());//new Date()时间戳的日期部分转换为本地时间格式 81 //2007/1/1 82 console.error(date1.toLocaleTimeString());//new Date()时间戳的时间部分转换为本地时间格式 83 //上午12:00:00 84 85 console.warn('Date.UTC() 识别的格式'); 86 console.log(Date.UTC(2016, 1, 20)); //月份为0-11 87 console.log(Date.UTC('2016,1,20')); //Date.UTC()不识别一串字符串 88 console.log(Date.UTC('2016', '1', '20')); //但这种格式可以 89 console.log(new Date(Date.UTC('2016', '1', '0')).toLocaleString()); 90 console.log(new Date(Date.UTC(2016, 1, 0)).toLocaleString()); 91 //可直接获取上个月月底的日期,但是不设置时间的话,小时会有异常 92 //console.log(new Date(Date.UTC(2016,1,-1)).toLocaleString()); 93 //类似 setDate(-1); 94 //console.log(new Date(Date.UTC(2016, -1, 20)).toLocaleString()); 95 //类似setMonth(-1)。用Date.UTC() 设置时间非常快捷 96 console.warn(new Date(Date.UTC(2016, 12, 1)).toLocaleString()); 97 //这里12相当于11+1 即 2017/1/1 98 99 console.warn('Date.parse() 识别的格式'); 100 console.log(new Date(Date.parse(2016, 1, 20)).toLocaleString()); 101 //Date.parse()识别字符串,遇到数字拼接格式时间异常 102 console.log(new Date(Date.parse('2016,0,20')).toLocaleString()); 103 //不识别月份0 104 console.log(new Date(Date.parse('2016/2/0')).toLocaleString()); 105 //不识别日期0 106 //可识别 , - / 空格 最好统一使用/ 107 console.log(new Date(Date.parse('2016,1,20')).toLocaleString()); 108 console.log(new Date(Date.parse('2016-1-20')).toLocaleString()); 109 console.log(new Date(Date.parse('2016/1/20')).toLocaleString()); 110 console.log(new Date(Date.parse('2016 1 20')).toLocaleString()); 111 console.log(new Date(Date.parse('1/20/2016')).toLocaleString()); 112 113 console.warn('new Date() 识别的格式'); 114 console.log(new Date('2016,1,20').toLocaleString()); 115 console.log(new Date('2016,2,20').toLocaleString()); 116 console.log(new Date('2016,0,20').toLocaleString()); 117 console.log(new Date('2016-2-0').toLocaleString()); 118 console.log(new Date('2016-1-22').toLocaleString()); 119 console.log(new Date('2016/1/22').toLocaleString()); 120 console.log(new Date('2016 1 22').toLocaleString()); 121 console.log(new Date(2016, 1, 22).toLocaleString()); 122 console.log(new Date('2016', '4', '22').toLocaleString()); 123 console.log(new Date('2016', '4', '0').toLocaleString()); 124 console.log(new Date(2016, 4, 0).toLocaleString()); 125 //console.log(new Date('2016年4月1日'));// 错误格式 126 127 console.error('获取当前时间 Unix时间'); 128 console.log(Date.UTC(new Date()));//NaN 无效! 129 console.log(Date.parse(new Date())); 130 console.log((new Date()).getTime()); 131 console.log(new Date('2016/4/1').getTime());//getTime() 只能在 new Date()后使用 132 console.log(Date.now()); 133 134 console.error('getxx'); 135 console.info(allFives); 136 console.warn(allFives.getFullYear());//**** 137 console.warn(allFives.getMonth());//0-11 138 console.warn(allFives.getDate());//1-31 139 console.warn(allFives.getDay());//星期几 0-6 140 console.warn(allFives.getHours());//0-23 141 console.warn(allFives.getMinutes());//0-59 142 console.warn(allFives.getSeconds());//0-59 143 144 console.error('setFullYear'); 145 console.log(allFives.setFullYear(2000)); 146 //传入也必须是****四位格式 ,结果为 Unix时间 147 console.log(new Date(allFives.setFullYear(2000)).toLocaleString()); 148 console.info(allFives);//set会改变原来设置的时间,并不是临时副本 149 console.log(new Date(allFives.setFullYear(2000+1)));//1年后 150 console.log(new Date(allFives.setFullYear(2000-1)));//1年前 151 152 console.error('setMonth'); 153 console.log(allFives.setMonth(0)); 154 console.log(new Date(allFives.setMonth(0)).toLocaleString()); 155 console.log(new Date(allFives.setMonth(1)).toLocaleString()); 156 console.log(new Date(allFives.setMonth(1-5)).toLocaleString());//5个月前 157 console.info(allFives); 158 console.log(new Date(allFives.setMonth(-24)).toLocaleString()); 159 //-1~-12相当于去年12月到1月,-13~-24继续推算 160 console.info(allFives); 161 162 console.error('setDate'); 163 console.error(allFives.setDate(22)); 164 console.log(new Date(allFives.setDate(22)).toLocaleString()); 165 console.log(new Date(allFives.setDate(2)).toLocaleString()); 166 console.log(new Date(allFives.setDate(2-5)).toLocaleString());//5天前 167 console.info(allFives); 168 console.log(new Date(allFives.setDate(0)).toLocaleString()); 169 //0~-30/29/28 相当于上个月最后一天到第一天,继续推算,因为月份天数有变,慎重使用。 170 console.info(allFives); 171 console.log(new Date(new Date(allFives.setMonth(allFives.getMonth()-1)).setDate(1)).toLocaleString()); 172 //上个月第一天 173 174 console.error('setHours'); 175 console.error(allFives.setHours(2)); 176 console.log(new Date(allFives.setHours(2))); 177 console.log(new Date(allFives.setHours(22))); 178 console.log(new Date(allFives.setHours(22-5)));//5个小时前 179 console.log(new Date(allFives.setHours(22+5)));//5个小时后 180 console.info(allFives); 181 console.log(new Date(allFives.setHours(-48))); 182 //-1~-24 相当于前一天的23-0点,-25~-48继续推算 183 console.info(allFives); 184 185 console.error('setMinutes'); 186 console.error(allFives.setMinutes(2)); 187 console.log(new Date(allFives.setMinutes(2))); 188 console.log(new Date(allFives.setMinutes(22))); 189 console.log(new Date(allFives.setMinutes(22-5)));//5分钟前 190 console.log(new Date(allFives.setMinutes(22+5)));//5分钟后 191 console.info(allFives); 192 console.log(new Date(allFives.setMinutes(-120))); 193 //-1~-60 相当于前一小时的59-0分,-61~-120继续推算 194 console.info(allFives); 195 196 197 198 199 </script> 200 </body>
总结
new Date() 识别:
① Date.parse() 识别的日期格式
② Date.UTC() 识别的日期格式
③ Unix时间
Date.prototype.toTimeString()
dateObj.toTimeString()
toTimeString() 方法以人类易读形式返回一个日期对象时间部分的字符串,该字符串以美式英语格式化。
var d = new Date(1993, 6, 28, 14, 39, 7); console.log(d.toString()); // prints Wed Jul 28 1993 14:39:07 GMT-0600 (PDT) console.log(d.toTimeString()); // prints 14:39:07 GMT-0600 (PDT)