forked from wteam-xq/testDemo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Date.html
167 lines (149 loc) · 5.81 KB
/
Date.html
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<!DOCTYPE html>
<html>
<head>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-COMPATIBLE" content="IE=edge,chrome=1"/>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="common.css" />
<title>
JS 日期对象理解
</title>
</head>
<body>
<h3>日期对象理解</h3>
<div class='btn-list'>
<button id="tomorrow" class="radius-btn">获取明天日期</button>
<button id="format" class="radius-btn">获得格式为yyyymmdd的字符串</button>
<button id="isleap" class="radius-btn">判断今年是否为闰年</button>
</div>
<div>
<p id="result_tips"> </p>
</div>
<script>
// 前言: javascript日期处理最经典的类库为:http://momentjs.cn/
// 本代码 用于理解日期的原生js具体实现方式
// 写的很不错的 日历算法: https://github.com/leecade/date/blob/master/src/g.date.js
// 对应文档: http://leecade.github.io/date/
var DAYS = [31,28,31,30,31,30,31,31,30,31,30,31];
init();
// 年月份数组
function init() {
var tomorrowBtn = document.getElementById('tomorrow'),
formatBtn = document.getElementById('format'),
isleapBtn = document.getElementById('isleap');
tomorrowBtn.onclick = tomorrowEvent;
formatBtn.onclick = formatEvent;
isleap.onclick = isleapEvent;
// 测试计算天数函数
console.log( '指定月份天数201604:' + getDaysByMonth(2016, 4) );
console.log( '指定年份天数2015:' + getDaysByYear(2015) );
// initDate();
browserDate();
}
// new Date() 参数初始化
// http://jishu.admin5.com/biancheng/131230/499.html
function initDate() {
// 初始化日期, 常用写法:new date(yyyy,mth,dd); new date(ms);
// 注意: 月份是从0开始计算,例如:new Date(2015, 10, 26)返回的是2015年11月26号的对象
// var data1 = new Date("2015", "10", "27");
var data1 = new Date(2015, 10, 26);
var data2 = new Date(1445922341227);
console.log("data1: " + data1);
console.log("data2: " + data2);
// 创建一个日期对象: var objDate=new Date([arguments list]);
// 参数形式有以下5种:
// 1)new Date("month dd,yyyy hh:mm:ss");
// 2)new Date("month dd,yyyy");
// 3)new Date(yyyy,mth,dd,hh,mm,ss);
// PS: 第三种初始化方法,一定要是整型;(别传字符串)
// 4)new Date(yyyy,mth,dd);
// 5)new Date(ms);
}
// new Date 浏览器兼容
// http://blog.csdn.net/blueheart20/article/details/44902747
function browserDate(){
// 浏览器兼容初始化日期写法
// 注意: 月份是从0开始计算,例如:new Date(2015, 10, 26)返回的是2015年11月26号的对象
var data1 = new Date('2015-10-26'); // IE9+ , chrome support
var data2 = new Date('2015/10/26'); // all support
// var data2 = new Date('2015/10/2'); // 支持单数字写法
console.log("data1: " + data1);
console.log("data2: " + data2);
}
// 获得明天的日期 格式:yyyy-mm-dd
function tomorrowEvent(){
var toDay = new Date(),
tomorrowDate,
tdTime = toDay.getTime(),
tomorrowTime;
// 一天时间的毫秒数
var ONEDAY = 3600 * 24 * 1000;
tomorrowTime = tdTime + ONEDAY;
tomorrowDate = new Date(tomorrowTime);
alert( formateDate(tomorrowDate) );
}
// 格式化今天日期: yyyy-mm-dd
function formatEvent(){
var toDay = new Date();
alert( formateDate(toDay) );
}
function isleapEvent(){
var toDay = new Date(),
resStr = '';
resStr = isLeapYear( toDay.getFullYear() )?'是闰年':'不是闰年';
alert(resStr);
}
// 公用, 格式化日期 格式:yyyy-mm-dd
function formateDate(date){
function getDoubleNum(num){
if (num >= 10){
return num;
} else {
return '0' + num;
}
}
var result = '',
date_y,
date_m,
date_d;
if (!!date){
try {
date_y = date.getFullYear();
date_m = getDoubleNum( date.getMonth() + 1 );
date_d = getDoubleNum( date.getDate() );
result = date_y + '-' + date_m + '-' + date_d;
}catch(e){
console.log(e);
}
}
return result;
}
// 公用, 判断是否为闰年
function isLeapYear(year){
var result = true,
yearCount = parseInt(year, 10);
if ( !isNaN(yearCount) && ( (yearCount % 4 === 0 && yearCount % 100 !== 0) || ( yearCount % 100 === 0 && yearCount % 400 === 0) ) ){
result = true;
} else{
result = false;
}
return result;
}
// 公用, 返回指定年、月的对应的天数
function getDaysByMonth(y, m){
return m == 2 ? ((y%4 == 0) && (y%100 != 0) || (y%400 == 0)) ? 29 : 28 : DAYS[m-1];
}
// 公用, 返回指定年的对应总天数
function getDaysByYear(y){
var _days = DAYS, i, len = _days.length, sum = 0;
if ( (y%4 == 0) && (y%100 != 0) || (y%400 == 0) ){
_days[1] = 29;
}
for(i = 0; i < len; i++){
sum += _days[i];
}
return sum;
}
</script>
</body>
</html>