javascript - 从该日期开始按星期几获取日期

标签 javascript date momentjs

问题

我正在使用 AngularJS,在我看来,我连续 7 天都在使用,如下图所示。红色、灰色和蓝色基于日期(9/1/2013 星期日)。当我单击“星期五”或“星期一”时,我希望返回该日期,以便我可以使用该日期的统计信息重新加载 0/3。

我不需要 AngularJS 的任何花哨的东西我无法弄清楚采用基准日期然后将日期切换为单击的日期的逻辑。


我如何让它返回日期?

  • 当前基准日期:2013 年 9 月 1 日 - 星期日
  • 我点击:星期四
  • 我收到:2013 年 8 月 29 日 - 星期四
  • 我点击:周日
  • 我收到:2013 年 9 月 1 日

它看起来像什么

enter image description here


我目前正在尝试将此函数从:

JavaScript - get the first day of the week from current date

function getMonday(d) {
  d = new Date(d);
  var day = d.getDay(),
      diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
  return new Date(d.setDate(diff));
}

getMonday(new Date()); // Mon Nov 08 2010

已解决!

我在呈现统计数据时在服务器端呈现日期。

使用 AngularJS:

最佳答案

忘记它看起来像什么,让我们关注您拥有的数据。

如果我对你的理解正确,你有一个类似这样的关联数组:

[{'M',0},{'T',1},{'W',2},{'T',3},{'F',4},{'S',5},{'S',6}]

而且你还有一个基准日期

var base = moment('2013-09-01');

基数与最后一个值 - 6 相关联。

那么你可以做的是这样的:

var x = 3; // I clicked on Thursday and got a 3
var target = base.subtract('days', 6-x);  // move back 6-x days

那会行得通,但是如果一开始就预先计算关联数组会不会容易得多?

[{'M','2013-08-26'},
 {'T','2013-08-27'},
 {'W','2013-08-28'},
 {'T','2013-08-29'},
 {'F','2013-08-30'},
 {'S','2013-08-31'},
 {'S','2013-09-01'}]

那么当它被点击时你就已经知道要使用什么值了。

关于javascript - 从该日期开始按星期几获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561360/

相关文章:

java - 将日期对象转换为 yyyy-MM-dd hh :mm:ss

javascript - 如何使用 moment js 解析这个日期字符串

javascript - 无法检测是否滚动到 div 的底部

javascript - 尝试使用本地存储来跟踪用户是否访问过页面,但不起作用

javascript - 在网页上绘制任意图片

javascript - 如何在momentjs中设置时间和日期

javascript - JS 日期 : Add 0 in front of every single day or month

javascript - 如何取消 AngularJS 中的 $resource 请求

php - 按php数组排序

ruby-on-rails - 如何获取rails activerecord今天创建的记录?