Jquery Countup直到下周一和从定义日期到今天的星期一

时间:2012-10-25 19:12:48

标签: jquery count counter

我正在尝试编制一个计数器,显示我们从特定日期开始的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/

谢谢!

1 个答案:

答案 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);​