【问题标题】:jQuery: week of year script acting upjQuery:一年中的一周脚本
【发布时间】:2010-12-27 15:37:10
【问题描述】:

前段时间我需要一个脚本来每周更新一些内容,我的问题在this forum得到了回答。

--

现在,我不是像你这样的 jQuery 专业人士 :),但我遇到的“问题”是今天(这篇文章的那一刻)是第 52 周,但脚本不起作用,它不是t 显示第 52 周的内容,所以我将我的 HTML 更改为第 53 周,它工作了。

“问题”是没有第 53 周,所以恐怕我将不得不更改我的 HTML 以继续计算第 54 周、第 56 周、第 57 周等等,那时那些周不存在。

这是 HTML 的摘录(结构在数周内重复,内容当然会发生变化):

<div class="quotes-container quote-53">
 <div class="quote">Quote here...</div>
 <div class="author">&mdash; Author </div>
</div>

脚本:

<script type="text/javascript">
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
}

jQuery(function(){  
 var today = new Date();
 var weekno = today.getWeek();
 jQuery('#quotes-wrapper').load('/common/testimonials.html div.quote-'+weekno);
});
</script>

知道发生了什么吗?

非常感谢您对此的任何帮助。

【问题讨论】:

  • 您想根据有多少个“星期日”来确定一周吗?还是您希望基于一年中第一天以来的 7 天周期?
  • 一年比 52 周长 1-2 天。所以,是的,你将有 53 周的时间出现,除非你的代码足够聪明,可以将年底视为下一年第 1 周的一部分。

标签: jquery week-number


【解决方案1】:

编辑:您使用的脚本将“周”视为星期日 - 星期六。由于一年并不总是从星期日开始,因此它将第一周视为第一周。

如果您只需要自年初以来的 7 个时间段,请使用以下脚本。如果您希望它基于星期日,那么您使用的脚本将是正确的。


还有一周#53。这还不到一整周。

但我们在周52我猜当前脚本没有考虑闰年。

相反,您可以计算今年的哪一天,然后除以 7。

示例: http://jsfiddle.net/etTS2/2/

<script type="text/javascript">

    Date.prototype.getWeek = function() {
      var onejan = new Date(this.getFullYear(),0,1);
      var today = new Date(this.getFullYear(),this.getMonth(),this.getDate());
      var dayOfYear = ((today - onejan +1)/86400000);
      return Math.ceil(dayOfYear/7)
    };


    jQuery(function(){  
     var today = new Date();
     var weekno = today.getWeek();
     jQuery('#quotes-wrapper').load('/common/testimonials.html div.quote-'+weekno);
    });

</script>

您仍会在一年的最后一天(或闰年的最后两天)收到 53 的结果。

编辑:修复了1dayOfYear 上的偏移量。

【讨论】:

  • 明年初不会还有问题吗? 1 月 1 日之后,您将回到第 1 周。Y2K 又来了,伙计!不过,说真的,我建议将 2010 年添加到 onejan 变量中。即 var onejan = new Date(2010,0,1);
  • 示例中的代码在 1 月 1 日将一周一分为二?我认为这对你正在做的事情是不必要的。但是 patrick 的代码解决了这个问题。
  • 帕特里克,感谢您的回答。我尝试了代码,但它没有用,它没有显示我的推荐/报价。我是否也必须更改我的 jQuery 函数中的某些内容?对不起,我是新手。再次感谢。仅供参考,我们的想法是明年也继续使用此脚本,依此类推。
  • @Ricardo:您将替换示例代码的前半部分(在中间的换行符上方)。下半场应该保持不变。我将更新我的答案以包含您的示例代码。另外,我做了一个小修复。
  • ...另外,您应该注意,我的代码会在一年中的第一天更改报价。因此,如果一年中的第一天是星期三,那么报价将在那天发生变化。如果您想每周日更改它,请使用您拥有的原始代码,但只需为一周添加一个报价53。它将在年初之后重新开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多