我正在尝试计算Tasker中2个日期之间的星期一,星期三和星期五的数量,因此我需要一个数学公式,可能使用以秒为单位的日期,即unix时间或javascript代码。我已经尝试使用谷歌搜索和绞尽脑汁,以任何方式甚至开始这个,我迷路了所以我还没有尝试任何东西。我唯一能想到的就是获得总天数除以7,但这显然对我没有多大帮助,特别是如果其中一天或两天都在周中。有人能指出我更好的方向吗?
答案 0 :(得分:8)
如何count specific days of the week between two dates in O(1):
// days is an array of weekdays: 0 is Sunday, ..., 6 is Saturday
function countCertainDays( days, d0, d1 ) {
var ndays = 1 + Math.round((d1-d0)/(24*3600*1000));
var sum = function(a,b) {
return a + Math.floor( ( ndays + (d0.getDay()+6-b) % 7 ) / 7 ); };
return days.reduce(sum,0);
}
在两个日期之间计算星期一,星期三和星期五[1,3,5]
的示例:
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,1)) // 1
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,2)) // 1
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,3)) // 2
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,4)) // 2
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,5)) // 3
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,6)) // 3
countCertainDays([1,3,5],new Date(2014,8,1),new Date(2014,8,7)) // 3
请注意,Date
的月份参数为0,因此2014年9月1日为Date(2014,8,1)
。
答案 1 :(得分:1)
假设总天数为n
。然后,一周中任何一天的数字最初为n / 7
。现在取n = n % 7
。根据当前n
的值,您可以轻松计算最终天数。
例如:
假设您的第一天为Friday
,总天数为100
。所以,n = 100
。每个工作日的最小100/7
或14
位于该区间内。 100 % 7 = 2
。所以最后的计数是,
Friday -> 14+1 = 15
Saturday -> 14+1 = 15
Sunday -> 14
Monday -> 14
Tuesday -> 14
Wednesday -> 14
Thursday -> 14
答案 2 :(得分:-1)
如何计算JavaScript中两个日期之间的星期五数
function myfunction() {
var frist = document.getElementById("dt_VacStart").value
var answer = 0;
var second = document.getElementById("dt_VacEnd").value;
if (frist != null && second != null) {
var startDate = new Date(frist);
var endDate = new Date(second);
var totalfriday = 0;
for (var i = startDate; i <= endDate;) {
if (i.getDay() ==5) {
totalfriday++;
}
i.setTime(i.getTime() + 1000 * 60 * 60 * 24);
}
document.getElementById('<%=Friday.ClientID%>').value = totalfriday;
} else {
totalfriday = 0;
document.getElementById('<%=Friday.ClientID%>').value = totalfriday;
}
}