javascript - 使用 JavaScript 确定 "Cycle"和周

标签 javascript date datetime google-apps-script

我在工作中使用的项目日历从一年的第一个星期六开始以 4 周为周期。

如何在没有任何额外库的情况下使用 JavaScript 确定给定日期的周期和周期周数?

最佳答案

这不是 Apps 脚本特有的,Date object在 GAS 中的工作方式与在大多数浏览器中一样(除了一些与此处无关的解析细节)。您可以获得一年的第一天,确定它与第一个星期六的距离,找到第一个星期六,然后找到它之后的天数。

然后除以28和flooring得到当前循环的次数;我加 1 假设它是基于 1 的编号,但这取决于你。与周数类似,除了 % 4 用于每 4 周重置一次计数器。

当前日期 2016-06-25,从一年中第 7 个周期的第 2 周开始。

一年中第一个星期六之前的日期记录为“第0个周期,第0周”;一个约定俗成的问题。

function weeks() {
  var now = new Date();
  var year = now.getFullYear();
  var offsetSat = 6 - new Date(year, 0, 1).getDay();
  var firstSat = new Date(year, 0, 1 + offsetSat);
  var daysSince = Math.round((now - firstSat)/(24*3600*1000));
  var cycleNum = daysSince < 0 ? 0 : 1 + Math.floor(daysSince/28);
  var weekNum = daysSince < 0 ? 0 : 1 + Math.floor(daysSince/7) % 4;
  return [cycleNum, weekNum];
}

关于javascript - 使用 JavaScript 确定 "Cycle"和周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023708/

相关文章:

javascript - 比较两个之间的验证(hh :mm:ss a) times in moment. js

usability - "Date of birth"验证 : How far/much would you go?

javascript - 没有日历的日期验证插件

php - 如何更改 'Timestamp' - MySql 中的列语言?

vb.net - 在 VB.NET 中将日期时间转换为等效的十六进制

MySQL如何插入 '00:65:00'之类的分钟值(大于59分59秒?

javascript - 在性能受限的环境中缓存文本/图像资源

javascript - 如何将本地 JSON 文件加载到 google map ?

php - 我如何知道今天是否在 PHP 中的圣诞节和主显节之间?

javascript - 使用 Deezer Javascript SDK DZ.Event.unsubscribe 取消订阅特定订阅