Skip to content

Commit 2e4978d

Browse files
committed
update: 内置对象 Date
1 parent bad86d0 commit 2e4978d

File tree

1 file changed

+98
-40
lines changed

1 file changed

+98
-40
lines changed

04-JavaScript基础/15-内置对象:Date.md

+98-40
Original file line numberDiff line numberDiff line change
@@ -39,40 +39,58 @@ object
3939

4040
### 写法二:传递参数
4141

42-
参数中既可以传递数字,也可以传递字符串
42+
传递参数时,表示获取指定时间的时间对象。参数中既可以传递字符串,也可以传递数字,也可以传递时间戳
4343

44-
代码举例:
44+
通过传参的这种写法,我们可以把时间字符串/时间数字/时间戳,按照指定的格式,转换为时间对象。
4545

46-
```javascript
47-
var date21 = new Date('2020/02/17 21:00:00');
48-
console.log(date21);
49-
// Mon Feb 17 2020 21:00:00 GMT+0800 (中国标准时间)
46+
举例1:(参数是字符串)
47+
48+
```js
49+
const date11 = new Date('2020/02/17 21:00:00');
50+
console.log(date11); // Mon Feb 17 2020 21:00:00 GMT+0800 (中国标准时间)
51+
52+
const date12 = new Date('2020/04/19'); // 返回的就是四月
53+
console.log(date12); // Sun Apr 19 2020 00:00:00 GMT+0800 (中国标准时间)
54+
55+
const date13 = new Date('2020-05-20');
56+
console.log(date13); // Wed May 20 2020 08:00:00 GMT+0800 (中国标准时间)
57+
58+
const date14 = new Date('Wed Jan 27 2017 12:00:00 GMT+0800 (中国标准时间)');
59+
console.log(date14); // Fri Jan 27 2017 12:00:00 GMT+0800 (中国标准时间)
60+
```
61+
62+
63+
举例2:(参数是多个数字)
5064

51-
var date22 = new Date(2020, 2, 18); // 第二个参数返回的是三月,不是二月
52-
console.log(date22);
53-
// Wed Mar 18 2020 00:00:00 GMT+0800 (中国标准时间)
65+
```js
66+
const date21 = new Date(2020, 2, 18); // 注意,第二个参数返回的是三月,不是二月
67+
console.log(date21); // Wed Mar 18 2020 00:00:00 GMT+0800 (中国标准时间)
5468

55-
var date23 = new Date(2020, 3, 18, 22, 59, 58);
56-
console.log(date23);
57-
// Sat Apr 18 2020 22:59:58 GMT+0800 (中国标准时间)
69+
const date22 = new Date(2020, 3, 18, 22, 59, 58);
70+
console.log(date22); // Sat Apr 18 2020 22:59:58 GMT+0800 (中国标准时间)
5871

59-
var date24 = new Date('2020/04/19'); // 返回的就是四月
60-
console.log(date24);
61-
// Sun Apr 19 2020 00:00:00 GMT+0800 (中国标准时间)
72+
const params = [2020, 06, 12, 16, 20, 59];
73+
const date23 = new Date(...params);
74+
console.log(date23); // Sun Jul 12 2020 16:20:59 GMT+0800 (中国标准时间)
75+
```
6276

63-
var date25 = new Date('2020-05-20');
64-
console.log(date25);
65-
// Wed May 20 2020 08:00:00 GMT+0800 (中国标准时间)
6677

67-
var date26 = new Date('Wed Jan 27 2017 12:00:00 GMT+0800 (中国标准时间)');
68-
console.log(date26);
69-
// Fri Jan 27 2017 12:00:00 GMT+0800 (中国标准时间)
78+
举例3:(参数是时间戳)
7079

80+
```js
81+
const date31 = new Date(1591950413388);
82+
console.log(date31); // Fri Jun 12 2020 16:26:53 GMT+0800 (中国标准时间)
83+
84+
// 先把时间对象转换成时间戳,然后把时间戳转换成时间对象
85+
const timestamp = new Date().getTime();
86+
const date32 = new Date(timestamp);
87+
console.log(date32); // Fri Jun 12 2020 16:28:21 GMT+0800 (中国标准时间)
7188
```
7289

7390

7491

7592

93+
7694
## 日期的格式化
7795

7896
上一段内容里,我们获取到了 Date **对象**,但这个对象,打印出来的结果并不是特别直观。
@@ -96,7 +114,7 @@ Date对象 有如下方法,可以获取日期和时间的**指定部分**:
96114
| getHours() | 获取小时:0-23 | |
97115
| getMinutes() | 获取分钟:0-59 | |
98116
| getSeconds() | 获取秒:0-59 | |
99-
| etMilliseconds() | 获取毫秒 | 1s = 1000ms |
117+
| getMilliseconds() | 获取毫秒 | 1s = 1000ms |
100118

101119

102120

@@ -168,12 +186,6 @@ function formatDate() {
168186

169187
## 获取时间戳
170188

171-
Date对象 还有如下方法:
172-
173-
- `getTime()` 获取日期对象的**时间戳**(单位:毫秒)。这个方法在实战开发中,用得比较多。但还有比它更常用的写法,我们往下看。
174-
175-
啥叫时间戳?我们先来解释这个概念。
176-
177189
### 时间戳的定义和作用
178190

179191
**时间戳**:指的是从格林威治标准时间的`1970年1月1日,0时0分0秒`到当前日期所花费的**毫秒数**(1秒 = 1000毫秒)。
@@ -199,25 +211,38 @@ Date对象 还有如下方法:
199211
为啥打印结果是`-28800000`,而不是`0`呢?这是因为,我们的当前代码,是在中文环境下运行的,与英文时间会存在**8个小时的时差**(中文时间比英文时间早了八个小时)。如果代码是在英文环境下运行,打印结果就是`0`
200212

201213

214+
### getTime():获取时间戳
215+
216+
`getTime()` 获取日期对象的**时间戳**(单位:毫秒)。这个方法在实战开发中,用得比较多。但还有比它更常用的写法,我们往下看。
217+
218+
202219
### 获取 Date 对象的时间戳
203220

204221
代码演示:
205222

206223
```js
207-
// 方式一:获取 Date 对象的时间戳(最常用的写法)
208-
var date1 = +new Date();
209-
console.log(date2); // 打印结果举例:1589448165370
224+
// 方式一:获取 Date 对象的时间戳(最常用的写法)
225+
const timestamp1 = +new Date();
226+
console.log(timestamp1); // 打印结果举例:1589448165370
227+
228+
// 方式二:获取 Date 对象的时间戳(较常用的写法)
229+
const timestamp2 = new Date().getTime();
230+
console.log(timestamp2); // 打印结果举例:1589448165370
210231

211-
var date2 = new Date();
232+
// 方式三:获取 Date 对象的时间戳
233+
const timestamp3 = new Date().valueOf();
234+
console.log(timestamp3); // 打印结果举例:1589448165370
212235

213-
// 方式二:获取 Date 对象的时间戳(较常用的写法)
214-
console.log(date2.getTime()); // 打印结果举例:1589448165370
236+
// 方式4:获取 Date 对象的时间戳
237+
const timestamp4 = new Date() * 1;
238+
console.log(timestamp4); // 打印结果举例:1589448165370
215239

216-
// 方式三:获取 Date 对象的时间戳
217-
console.log(date2.valueOf()); // 打印结果举例:1589448165370
240+
// 方式5:获取 Date 对象的时间戳
241+
const timestamp5 = Number(new Date());
242+
console.log(timestamp5); // 打印结果举例:1589448165370
218243
```
219244

220-
上面这三种写法都可以获取任意 Date 对象的时间戳,最常见的写法是**方式一**,其次是方式二。
245+
上面这五种写法都可以获取任意 Date 对象的时间戳,最常见的写法是**方式一**,其次是方式二。
221246

222247
根据前面所讲的关于「时间戳」的概念,上方代码获取到的时间戳指的是:从 `1970年1月1日,0时0分0秒` 到现在所花费的总毫秒数。
223248

@@ -226,11 +251,11 @@ Date对象 还有如下方法:
226251
如果我们要获取**当前时间**的时间戳,除了上面的三种方式之外,还有另一种方式。代码如下:
227252

228253
```js
229-
// 方式四:获取当前时间的时间戳(很常用的写法)
230-
console.log(Date.now()); // 打印结果举例:1589448165370
254+
// 方式六:获取当前时间的时间戳(很常用的写法)
255+
console.log(Date.now()); // 打印结果举例:1589448165370
231256
```
232257

233-
上面这种方式四,用得也很多。只不过,`Date.now()`是H5标准中新增的特性,如果你的项目需要兼容低版本的IE浏览器,就不要用了。这年头,谁还用IE呢?
258+
上面这种方式六,用得也很多。只不过,`Date.now()`是H5标准中新增的特性,如果你的项目需要兼容低版本的IE浏览器,就不要用了。这年头,谁还用IE呢?
234259

235260

236261
### 利用时间戳检测代码的执行时间
@@ -378,6 +403,39 @@ Date对象 还有如下方法:
378403

379404
![](http://img.smyhvae.com/20180202_1130.gif)
380405

406+
## Moment.js
407+
408+
Moment.js是一个轻量级的JavaScript时间库,我们可以利用它很方便地进行时间操作,提升开发效率。
409+
410+
使用举例:
411+
412+
```html
413+
<!DOCTYPE html>
414+
<html lang="en">
415+
<head>
416+
<meta charset="UTF-8" />
417+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
418+
<title>Document</title>
419+
</head>
420+
<body>
421+
<script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.26.0/moment.min.js"></script>
422+
<script>
423+
// 按照指定的格式,格式化当前时间
424+
console.log(moment().format('YYYY-MM-DD HH:mm:ss')); // 打印结果举例:2020-06-12 16:38:38
425+
console.log(typeof moment().format('YYYY-MM-DD HH:mm:ss')); // 打印结果:string
426+
427+
// 按照指定的格式,格式化指定的时间
428+
console.log(moment('2020/06/12 18:01:59').format('YYYY-MM-DD HH:mm:ss')); // 打印结果:2020-06-12 18:01:59
429+
430+
// 按照指定的格式,获取七天后的时间
431+
console.log(moment().add(7, 'days').format('YYYY-MM-DD hh:mm:ss')); // 打印结果举例:2020-06-19 04:43:56
432+
</script>
433+
</body>
434+
</html>
435+
436+
```
437+
438+
381439
## 我的公众号
382440

383441
想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。

0 commit comments

Comments
 (0)