繁体   English   中英

根据该日期的星期几获取日期

[英]Get date by day of week based from that date

问题

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

我不需要任何花哨的AngularJS我无法弄清楚采用基准日期的逻辑,然后在被点击的那天切换一天。


如何让这个回复日期?

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

它看起来像什么

在此输入图像描述


我目前正在尝试从以下位置转换此函数:

JavaScript - 从当前日期获取一周的第一天

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'}]

然后你就会知道点击它时要使用的值。

有片刻的问题day()是周日== 0,不是星期一,所以你必须跳1周背部和使用范围1..7为Monday..Sunday:

base = '9/1/2013'
console.log(moment(base).day(-7).day(4))
> Thu Aug 29 2013 00:00:00 GMT+0100
console.log(moment(base).day(-7).day(7))
> Sun Sep 01 2013 00:00:00 GMT+0100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM