晴明的博客园 GitHub      CodePen      CodeWars     

[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)

 

posted @ 2016-02-19 02:56  晴明桑  阅读(183)  评论(0编辑  收藏  举报