我正在尝试学习更多关于JavaScript的知识,并决定制作一个从年到毫秒的倒计时计时器。这对我来说只是一个学习实验。
会议记录不正确。如果我刷新浏览器,秒和分总是从59开始。我认为这可能是因为我正在调用Date对象并可能重置它。我想要的是倒计时到某个日期。
因为这对我来说是一个学习实验,如果你看到其他可以改进的地方,请告诉我。
var dateA = new Date();
var dateB = new Date('June 3, 2014 00:27:00');
var cntr = setInterval(clock, 10);
function clock()
{
dateB = (dateB - 10);
var date = new Date(dateB);
var yrs = Math.abs(date.getUTCFullYear() - dateA.getUTCFullYear() );
var mos = Math.abs(date.getUTCMonth() - dateA.getUTCMonth());
var days = Math.abs(date.getUTCDate() - dateA.getUTCDate());
var hrs = Math.abs(date.getUTCHours() - dateA.getUTCHours());
var mins = Math.abs(date.getUTCMinutes() - dateA.getUTCMinutes());
var secs = Math.ceil(date.getUTCSeconds() - dateA.getUTCSeconds() / 60);
var mill = Math.ceil(date.getUTCMilliseconds() - dateA.getUTCMilliseconds() / 999);
var str =
yrs + ' Years ' +
mos + ' Months ' +
days + ' Days ' +
hrs + ' Hours ' +
mins + ' Mins ' +
secs + ' Secs ' +
mill + ' Mill';
document.getElementById('clock').innerHTML = str;
}
var yrs = Math.abs(date.getUTCFullYear() - dateA.getUTCFullYear() ); var mos = Math.abs(date.getUTCMonth() - dateA.getUTCMonth()); var days = Math.abs(date.getUTCDate() - dateA.getUTCDate()); var hrs = Math.abs(date.getUTCHours() - dateA.getUTCHours()); var mins = Math.abs(date.getUTCMinutes() - dateA.getUTCMinutes());
你不能只取日期各部分差异的绝对值!你最终会得到完全错误的数字。
var secs = Math.ceil(date.getUTCSeconds() - dateA.getUTCSeconds() / 60); var mill = Math.ceil(date.getUTCMilliseconds() - dateA.getUTCMilliseconds() / 999);
为什么你要把这些除以60和近1000?!
相反,要计算时差,您需要获得完整的差异(通常以毫秒为单位)并将其转换为不同的单位。你的函数应该是这样的:
var el = document.getElementById('clock');
function clock() {
var diff = dateB - Date.now();
var yrs = Math.floor(diff / 31536000000);
var mos = Math.floor(diff / 2678400000) % 12;
var days = Math.floor(diff / 86400000) % 31;
var hrs = Math.floor(diff / 3600000) % 24;
var mins = Math.floor(diff / 60000) % 60;
var secs = Math.floor(diff / 1000) % 60;
var mill = diff % 1000;
var str =
yrs + ' Years ' +
mos + ' Months ' +
days + ' Days ' +
hrs + ' Hours ' +
mins + ' Mins ' +
secs + ' Secs ' +
mill + ' Mill';
el.innerText = str;
}
如果您使用javascript比较日期或计算天数,您可能会遇到一些问题。您应该使用库来获得更好的结果。
我建议您使用http://momentjs.com/作为日期或时间函数。它很容易使用,更灵活。
这应该回答你的问题:倒计时使用Moment js
try this..
function checkFromDate(sender, args) {
if (sender._selectedDate > new Date()) {
alert("You cannot select a day future than today.");
sender._selectedDate = new Date();
sender._textbox.set_Value(sender._selectedDate.format(sender._format))
}
}