Mam następujący która działa dobrze dla moich potrzeb:Wykluczanie weekendy od daty/czasu zliczania godzinnym
function funLoad(str1,str3,str4)
{
var dym1 = str1.split("/");
var d=new Date();
var dym2 = d.getMonth() + 1 + "-" + d.getDate() + "-" + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":00";
//var dym2 = "6 10 2013 09:00:00";
var start = Date.parse(dym1[1] + "-" + dym1[0] + "-" + dym1[2] + " " + str3 + ":" + str4 + ":00");
var end = Date.parse(dym2);
return (start-end)/(1000*60*60);
}
$("#btn1").click(function(event){
alert(funLoad($("#txt1").val(),$("#ddlHourTime").val(),$("#ddlMinuteTime").val()));
});
Oto jsfiddle: http://jsfiddle.net/QTVWd/8/
Doceniam, że będzie to prawdopodobnie tylko praca w IE8 , ale rozwijam się w środowisku intranetowym, gdzie wszyscy używają tylko IE8, więc to nie jest problem. Ignorując to, ten skrypt pobiera wybraną datę i czas, porównuje go z bieżącą datą/czasem i zwraca godziny. Jak dotąd wszystko dobrze.
Problem polega na tym, że liczy się w weekendy. Jak liczyć godziny tylko w dni powszednie i wykluczać weekendy, jeśli data rozpoczęcia i zakończenia obejmuje weekendy? Na przykład, jeśli data rozpoczęcia przypada w piątek, a data zakończenia przypada w poniedziałek, powinna ona obejmować tylko godziny w piątek i poniedziałek, z wyłączeniem 48 godzin w weekendy.
Należy pamiętać, że nie każdy dzień ma 24 godziny długo, zakładając, że światło dzienne czas oszczędzania obowiązuje w używanej strefie czasowej (ponieważ mówimy tutaj konkretnie o dniach weekendu tutaj, są dwa soboty w roku, które są problematyczne). Z tego, co widzę z szybkiego spojrzenia, żadna z dotychczasowych odpowiedzi tego nie wyjaśnia. – CBroe