我在工作中使用的项目日历从一年的第一个星期六开始以 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/