根据周数分一个月。 JS

时间:2015-10-12 16:32:26

标签: javascript momentjs

我正在开展一个项目,在这个项目中,我需要查找哪些日子是假期,并显示这些假期的具体消息。

有些假期,比如圣诞节,就在十二月二十五日。但是对于其他假期,例如感恩节,它有点棘手,因为它是11月的第四个星期四。

我使用的方法是在哪一周分裂。

<div id="wrapper">
  <!--60% width-->
  <header>
    <div id="logo" class="logo">
      <h1>This is where the logo will be</h1>
    </div>
    <!--50% centred-->
    <div id="nav">
      <!--50% width centred-->
      <ul>
        <li><a href="#">Home</a>
        </li>
        <li><a href="#">About</a>
        </li>
        <li><a href="#">News</a>
        </li>
        <li><a href="#">Contact</a>
        </li>
        <li><a href="#">Blog</a>
        </li>
      </ul>
    </div>
  </header>
  <div id="left_page" class="columns">
    <h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h2>
  </div>
  <div id="right_page" class="columns">
    <h2>Sed efficitur consequat massa ut sagittis.</h2>
  </div>
  <div id="centre_block">
    <h1>Sed dapibus dapibus lectus in auctor.</h1>
  </div>
  <footer>
    <h3>This will be the footer</h3>
    <p>This is where &copy; Copyright information goes</p>
  </footer>

</div>

今天恰好是哥伦布日,所以根据我所拥有的,它应该是&#39; 10/2/1&#39;。第10个月,第2周,第1天。 (10/12)。我得到的问题是,我现在正在度假2,我得到了:

day = moment()
month = day.month() + 1
weeknum = Math.floor((day - 1) / 7) + 1
holiday2 = month + "/" + weeknum + "/" + day

所以......我从技术上知道我已经接近了,因为我看到了&#39; 10/2/1&#39;但我的异常数字非常大。

我的问题是2折。我如何压缩这些数字,以便不是得到10位数的响应,而是只得到我需要的1或2位数字?

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

moment()返回日期对象。您需要获得类似于您已经获得月份的日期。 You can do this using .date()

day = moment();
month = day.month() + 1;
date = day.date();
weeknum = Math.floor((date - 1) / 7) + 1;
holiday2 = month + "/" + weeknum + "/" + date;

由于日期转换为整数的方式,您当前的解决方案无效。具体来说,它们存储为number of milliseconds since 1970/01/01

This answer建议获得周数的最佳方式:

var weeknum = Math.ceil(date / 7);