问题
我正在使用 AngularJS,在我看来,我连续 7 天都在使用,如下图所示。红色、灰色和蓝色基于日期(9/1/2013 星期日)。当我单击“星期五”或“星期一”时,我希望返回该日期,以便我可以使用该日期的统计信息重新加载 0/3。
我不需要 AngularJS 的任何花哨的东西我无法弄清楚采用基准日期然后将日期切换为单击的日期的逻辑。
我如何让它返回日期?
- 当前基准日期:2013 年 9 月 1 日 - 星期日
- 我点击:星期四
- 我收到:2013 年 8 月 29 日 - 星期四
- 我点击:周日
- 我收到:2013 年 9 月 1 日
它看起来像什么
我目前正在尝试将此函数从:
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:
- 我的指示:http://paste.laravel.com/Nz9
- 我的 HTML 模板:http://paste.laravel.com/Nza
- 我的 PHP:http://paste.laravel.com/Nzc
最佳答案
忘记它看起来像什么,让我们关注您拥有的数据。
如果我对你的理解正确,你有一个类似这样的关联数组:
[{'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/