我正在尝试编制一个计数器,显示我们从特定日期开始的MONDAYS数量。
例如,自2012年1月10日起,我们有4个星期一,直到今天的10月25日。
我可以通过一些编码搜索来完成第一步,并根据我的需要进行调整。
现在对我来说最棘手的部分是想要显示一个计数器,显示从现在到下个月剩余的百分比,以增加另一个星期一到主柜台。
例如,从2012年1月10日起,我们有4个星期一到现在,但10月25日是星期四,所以我怎么能做一个计数,显示时间增加,剩下的值将在下一个星期一实现?
我试着把它作为计数器,比如使用天,小时,分钟和秒,所以每次运行它从今天开始计算到下一个星期一,所以每周我们将有一个这样的数字在计数器:6天23小时59分59秒,然后在星期一的数量上添加一个新数字,这样我们在6天后就实现了新的星期一,但当然如果我访问中间运行代码的页面,我将已经拥有了增加价值并计算每一秒。
有人可以帮忙吗?如果你知道一个更好的方法来实现同样的目标,那就完全可以了。
总结一下我想要实现的是一个计数器,说明已经过了多少个星期一,剩下多少时间留给下一个星期一和现场计算。它必须永远不要在下一个星期一停止,在实现下一个星期一之后它会一直持续到下一个星期一。
欢迎提出问题!
<pre><code>
// This Code Counts how many mondays from a specified date to the actual date.
// Create a new date variable
var d = new Date();
var month = d.getMonth() + 1;
var day = d.getDate();
// Get the actual date and store on a variable
var actualDate = d.getFullYear() + '/' + (('' + month).length < 2 ? '0' : '') + month + '/' + (('' + day).length < 2 ? '0' : '') + day;
// Set dates start and get actual date
var date1 = new Date('10/01/2012'); // Set the begninning date here
var date2 = new Date(actualDate);
var monday = Math.abs(date1.getTime() - date2.getTime()) / (1000 * 60 * 60 * 24 * 7);
monday -= 0.1;
monday = Math.floor(monday);
monday *= 1;
if (date1.getDay() == 1) monday += 1;
if (date2.getDay() == 1) monday += 1;
//$('').html(monday);
$("#showMondays").text(monday);
</pre></code>
这是工作的星期一计数器:http://jsfiddle.net/hRaAF/
谢谢!
答案 0 :(得分:0)
我将以下代码添加到您的小提琴中,您可以看到它正常工作here。
var nextMonday = function(now) {
var day = now.getUTCDay();
var next = new Date();
next.setDate(next.getDate() + (7 - day));
next.setHours(0);
next.setMinutes(0);
next.setSeconds(0);
return next;
};
var SECS = 1000;
var MINS = 60 * SECS;
var HOURS = 60 * MINS;
var DAYS = 24 * HOURS;
var countDown = function() {
var now = new Date();
var next = nextMonday(now);
var difference = Math.abs(next - now);
var days = Math.floor(difference / DAYS);
difference = difference % DAYS;
var hours = Math.floor(difference / HOURS);
difference = difference % HOURS;
var minutes = Math.floor(difference / MINS);
difference = difference % MINS;
var seconds = Math.floor(difference / SECS);
var text = days + ' days ' + hours + ' hours ' + minutes + ' minutes ' + seconds + ' seconds ';
$('#count').text(text);
setTimeout(countDown, 1000);
};
countDown();
setTimeout(countDown, 1000);
修改强>
Here是修改后的代码。我删除了以前的代码,该代码计算了自给定星期一以来的星期一数量,并替换为更简单的版本。您可以测试它在您的计算机中更改日期和时间,因为这是javascript获取当前日期的值。
var begin = new Date('10/01/2012');
var SECS = 1000;
var MINS = 60 * SECS;
var HOURS = 60 * MINS;
var DAYS = 24 * HOURS;
var WEEKS = 7 * DAYS;
var countMondaysFrom = function(begin) {
var difference = Math.abs(new Date() - begin);
var days = Math.floor(difference / WEEKS);
return days;
};
var lastMonday = function(now) {
var day = now.getUTCDay() - 1;
day = day < 0 ? 6 : day;
var last = new Date();
last.setDate(last.getDate() - day);
last.setHours(0);
last.setMinutes(0);
last.setSeconds(0);
return last;
};
var countUp = function() {
var now = new Date();
var last = lastMonday(now);
var difference = Math.abs(now - last);
var days = Math.floor(difference / DAYS);
difference = difference % DAYS;
var hours = Math.floor(difference / HOURS);
difference = difference % HOURS;
var minutes = Math.floor(difference / MINS);
difference = difference % MINS;
var seconds = Math.floor(difference / SECS);
var text = days + ' days ' + hours + ' hours ' + minutes + ' minutes ' + seconds + ' seconds ';
$('#count').text(text);
$("#showMondays").text(countMondaysFrom(begin));
setTimeout(countUp, 1000);
};
countUp();
setTimeout(countUp, 1000);