Skip to content

Commit 62d9ce9

Browse files
committed
Countdown working!!!
1 parent 33b499c commit 62d9ce9

File tree

1 file changed

+149
-31
lines changed

1 file changed

+149
-31
lines changed

js/counter.js

Lines changed: 149 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
calc("sec", getSec);
2-
calc("min", getMin);
3-
var intSec = setInterval('calc("sec", getSec)', 1000);
4-
var intMin;
1+
var intSec, intMin, intHour, intDay;
2+
var deadline = new Date(2013, 11, 26, 23, 21, 00, 00);
53

6-
function calc(type, func) {
4+
var calc = function(type, func) {
75
$('.counter.'+type+' .to')
86
.addClass('hide')
97
.removeClass('to')
@@ -25,38 +23,158 @@ function calc(type, func) {
2523
}
2624

2725

28-
function getSec(next) {
29-
var d = new Date();
30-
var sec = 60-d.getSeconds();
26+
var getSec = function(next) {
27+
var today = new Date();
28+
var sec = secsUntil(today, deadline);
3129

32-
if (next) {
33-
sec--;
34-
if (sec < 0) {
35-
sec = 59;
36-
}
37-
} else if(sec == 60) {
38-
sec = 0;
39-
if (intMin == undefined) {
40-
calc("min", getMin);
41-
intMin = setInterval('calc("min", getMin)', 60000);
42-
}
30+
if (!next) {
31+
sec++;
4332
}
4433

34+
if (sec === 60) {
35+
sec = 0;
36+
} else if (sec === 61) {
37+
sec = 1;
38+
}
39+
4540
return (sec < 10 ? '0' + sec : sec);
4641
}
4742

48-
function getMin(next) {
49-
var d = new Date();
50-
var min = 60-d.getMinutes();
51-
if (next) {
52-
min--;
53-
if (min < 0) {
54-
min = 59;
55-
}
56-
} else if(min == 60) {
57-
min = 0;
58-
// calcMin();
43+
var getMin = function(next) {
44+
var today = new Date();
45+
var min = minsUntil(today, deadline);
46+
47+
if (!next) {
48+
min++;
5949
}
6050

51+
if (min === 60) {
52+
min = 0;
53+
}
54+
6155
return (min < 10 ? '0' + min : min);
62-
}
56+
}
57+
58+
var getHour = function(next) {
59+
var today = new Date();
60+
var hour = hoursUntil(today, deadline);
61+
62+
if (!next) {
63+
hour++;
64+
}
65+
66+
if (hour === 24) {
67+
hour = 0;
68+
} else if (hour === 25) {
69+
hour = 1;
70+
}
71+
72+
return (hour < 10 ? '0' + hour : hour);
73+
}
74+
75+
var getDay = function(next) {
76+
var today = new Date();
77+
var day = daysUntil(today, deadline);
78+
79+
if (!next) {
80+
day++;
81+
}
82+
83+
if (day < 0) {
84+
day = 0;
85+
}
86+
87+
return (day < 10 ? '0' + day : day);
88+
}
89+
90+
// Days until Date2 from Date1
91+
var daysUntil = function(date1, date2) {
92+
// Convert both dates to milliseconds
93+
var msD1 = date1.getTime();
94+
var msD2 = date2.getTime();
95+
96+
// Calculate the difference in milliseconds
97+
var msDiff = msD2 - msD1;
98+
99+
// Convert back to days and return
100+
return (msDiff >= 0) ? Math.floor( msDiff / (24*3600*1000) ) : -1;
101+
}
102+
103+
// Hours until Date2 from Date1
104+
var hoursUntil = function(date1, date2) {
105+
var hDiff = 0;
106+
var daysLeft = daysUntil(date1, date2);
107+
108+
if (daysLeft !== -1) {
109+
// Convert both dates to milliseconds
110+
var msD1 = date1.getTime();
111+
var msD2 = date2.getTime();
112+
113+
// Calculate the difference in milliseconds
114+
hDiff = Math.floor( ( msD2 - msD1 ) / ( 3600*1000 ) ) - daysLeft * 24;
115+
}
116+
117+
return hDiff;
118+
}
119+
120+
// Minutes until Date2 from Date1
121+
var minsUntil = function(date1, date2) {
122+
var mDiff = 0;
123+
var daysLeft = daysUntil(date1, date2);
124+
var hoursLeft = hoursUntil(date1, date2);
125+
126+
if (daysLeft !== -1) {
127+
// Convert both dates to milliseconds
128+
var msD1 = date1.getTime();
129+
var msD2 = date2.getTime();
130+
131+
mDiff = Math.floor( ( msD2 - msD1 ) / ( 60*1000 ) ) - daysLeft * 24*60 - hoursLeft * 60;
132+
}
133+
134+
return mDiff;
135+
}
136+
137+
// Seconds until Date2 from Date1
138+
var secsUntil = function(date1, date2) {
139+
var sDiff = 0;
140+
var daysLeft = daysUntil(date1, date2);
141+
var hoursLeft = hoursUntil(date1, date2);
142+
var minsLeft = minsUntil(date1, date2);
143+
144+
if (daysUntil(date1, date2) !== -1) {
145+
// Convert both dates to milliseconds
146+
var msD1 = date1.getTime();
147+
var msD2 = date2.getTime();
148+
149+
sDiff = Math.floor( ( msD2 - msD1 ) / ( 1000 ) ) - daysLeft * 24*3600 - hoursLeft * 3600 - minsLeft * 60;
150+
}
151+
152+
return sDiff;
153+
}
154+
155+
calc("sec", getSec);
156+
calc("min", getMin);
157+
calc("hour", getHour);
158+
calc("day", getDay);
159+
if (parseInt(getDay(false)) !== -1) {
160+
intSec = setInterval(function() {
161+
calc("sec", getSec);
162+
163+
if (parseInt(getSec(false)) === 0) {
164+
calc("min", getMin);
165+
166+
if (parseInt(getMin(false)) === 0) {
167+
calc("hour", getHour);
168+
169+
if (parseInt(getHour(false)) === 0) {
170+
calc("day", getDay);
171+
}
172+
}
173+
}
174+
}, 1000);
175+
}
176+
var today = new Date();
177+
console.log(daysUntil(today, deadline));
178+
console.log(hoursUntil(today, deadline));
179+
console.log(minsUntil(today, deadline));
180+
console.log(secsUntil(today, deadline));

0 commit comments

Comments
 (0)