1

我正在尝试编写一个计数来显示我们从特定日期开始有多少个星期一。

例如,自 2012 年 10 月 1 日以来,我们有 4 个星期一,直到今天 10 月 25 日。

这第一步我可以通过从某些地方进行一些编码搜索并根据我的需要进行调整来实现。

现在对我来说棘手的部分是要找到一种方法来显示一个计数,该计数显示从现在到下个月剩余的百分比,以增加另一个星期一到主计数器。

例如,从 2012 年 10 月 1 日到现在,我们有 4 个星期一,但是 10 月 25 日是星期四,所以我怎么能做一个计数来显示时间随着下星期一达到的剩余价值而增加?

我试着像使用天、小时、分钟和秒一样进行计数,所以每次运行它都从今天开始,值一直计数到下一个星期一,所以每周我们都会在计数器中有一个这样的数字:6days 23hours 59minutes 59seconds 然后在星期一的数量上添加一个新数字,这样我们在 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/

谢谢!

4

1 回答 1

0

我将以下代码添加到您的小提琴中,您可以看到它在这里工作。

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);

编辑

是修改后的代码。我删除了以前计算自给定星期一以来的星期一数的代码,并替换为更简单的版本。您可以测试它更改计算机中的日期和时间,因为这是 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);​
于 2012-10-25T19:54:33.863 回答