内置对象-时间Date

内置对象Date

3. 日期对象

3.1 概述

image-20230228161121213

3.2 常用方法

image-20230228161208958

3.3 案例

3.31 封装一个时间函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<script>
var time = document.querySelector('.time')
function getNow() {
var now = new Date()
var y = now.getFullYear()
var m = now.getMonth() + 1
var d = now.getDate()
var week = now.getDay()
var weeks = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fir', 'Sat']
var h = now.getHours()
var min = now.getMinutes()
var s = now.getSeconds()
if (h < 10) {
h = '0' + h
}
if (min < 10) {
min = '0' + min
}
if (s < 10) {
s = '0' + s
}
time.innerHTML = y + '/' + m + '/' + d + '/ ' + weeks[week] + ' ' + h + ':' + min + ':' + s
}
getNow()
setInterval(getNow, 1000)
</script>

3.32 时间函数补0升级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script type="text/javascript">
//获取当前时间
function show(){
date =new Date
year=date.getFullYear()
month =date.getMonth()+1
day =date.getDate()
hour =zero(date.getHours())
minute =zero(date.getMinutes())
second=zero(date.getSeconds())
text =year+"年"+month+"月"+day+"日"+" "+hour+":"+minute+":"+second
document.querySelector(".timer").innerHTML=text
}


function zero(num){
if(num<10){
num="0"+num
}
return num;
}

show()
setInterval(show,1000)
</script>

3.33 格式化年月日

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
// 格式化日期 年月日
var date = new Date();
console.log(date.getFullYear()); // 返回当前日期的年 2019
console.log(date.getMonth() + 1); // 月份 返回的月份小1个月 记得月份+1 呦
console.log(date.getDate()); // 返回的是 几号
console.log(date.getDay()); // 3 周一返回的是 1 周六返回的是 6 但是 周日返回的是 0
// 我们写一个 2019年 5月 1日 星期三
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
var day = date.getDay();
console.log('今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day]);
</script>

3.34 格式化时分秒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
// 格式化日期 时分秒
var date = new Date();
console.log(date.getHours()); // 时
console.log(date.getMinutes()); // 分
console.log(date.getSeconds()); // 秒
// 要求封装一个函数返回当前的时分秒 格式 08:08:08
function getTimer() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
</script>

3.35 返回date毫秒数

1
2
3
4
5
6
7
8
9
10
11
12
<script>
// 获得Date总的毫秒数(时间戳) 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
// 1. 通过 valueOf() getTime()
var date = new Date();
console.log(date.valueOf()); // 就是 我们现在时间 距离1970.1.1 总的毫秒数
console.log(date.getTime());
// 2. 简单的写法 (最常用的写法)
var date1 = +new Date(); // +new Date() 返回的就是总的毫秒数
console.log(date1);
// 3. H5 新增的 获得总的毫秒数
console.log(Date.now());
</script>

3.36 倒计时

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script>
// 倒计时效果
// 1.核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时 ,但是不能拿着时分秒相减,比如 05 分减去25分,结果会是负数的。
// 2.用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
// 3.把剩余时间总的毫秒数转换为天、时、分、秒 (时间戳转换为时分秒)
// 转换公式如下:
// d = parseInt(总秒数/ 60/60 /24); // 计算天数
// h = parseInt(总秒数/ 60/60 %24) // 计算小时
// m = parseInt(总秒数 /60 %60 ); // 计算分数
// s = parseInt(总秒数%60); // 计算当前秒数
function countDown(time) {
var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
var inputTime = +new Date(time); // 返回的是用户输入时间总的毫秒数
var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数
var d = parseInt(times / 60 / 60 / 24); // 天
d = d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //时
h = h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); // 分
m = m < 10 ? '0' + m : m;
var s = parseInt(times % 60); // 当前的秒
s = s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2019-5-1 18:00:00'));
var date = new Date();
console.log(date);
</script>

3.37 返回今年的第多少天

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<script>
// ### 计算指定日期是今年的第几天
//题目描述:制作一个函数,getDayNum( 年月日日期 ),可以返回指定日期是当前年的第几天
//例: getDayNum( “2019-1-2”) 返回值为:2
// 判断是否为闰年的函数
// function isRunYear(y) {
// // 如果是闰年我们返回 true 否则 返回 false
// var flag = false;
// if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
// flag = true;
// }
// return flag;
// }

// function getDayNum(y, m, d) {
// var month
// switch (m) {
// case 1:
// case 3:
// case 5:
// case 7:
// case 8:
// case 10:
// case 12:
// month = 31
// break;
// case 4:
// case 6:
// case 9:
// case 11:
// month = 30;
// break;
// case 2:
// if(isRunYear(y)) {
// month=29
// }else{
// month=28;
// }
// break;
// }
// var nthDay =(m-1)*month+d
// return nthDay
// }
// console.log(getDayNum(2019, 12, 30));
function isRun(year) {
var flag = false;
if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
return flag = true;
}
}

function get_day(year, month, day) {
var days = day;
for (var i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if (isRun(year)) {
days += 29;
} else {
days += 28;
}
break;
}
}
return days;
}
var year = Number(prompt("请输入多少年:"));
var month = Number(prompt("请输入月份:"));
var day = Number(prompt("请输入几号:"));
var result = get_day(year, month, day);
document.write(result);
</script>

3.38 返回今年第多少天升级版

1
2
3
4
5
6
7
8
9
10
11
12
<script>
function getDayNum(time) {
var now = new Date(time);
var getYear = now.getFullYear();
var firstDay = +new Date(getYear.toString());
var thisDay = +new Date(time);
var Times = (thisDay - firstDay) / 1000;
var d = Math.ceil(Times / 60 / 60 / 24) + 1;
return d + '天';
}
console.log(getDayNum('2021-1-2'));
</script>