2017-03-16 4 views
0

je veux calculer la plage entre 2 dates sans compter le week-end en javascript. J'ai un code qui compte déjà la distance entre eux. mais je suis coincé avec la partie week-end. Date inputed par CJuiDatePicker dans le cadre YIIcomment puis-je compter la plage entre 2 dates sans compter le week-end en javascript

<script> 
    function calcDay(dt1, dt2, range){ 

    var msec1 = dt1; 
    var date1 = new date(msec1); 
    var msec2 = dt2; 
    var date2 = new date(msec2); 

    if(date1>0 || date2>0){ 
    range.val(isFinite(Math.round(date2-date1)/86400000) || 0); 
    } 
    }; 
    </script> 

86400000 est le jour en milliseconde

merci à l'avance

+0

Possible copie de [Trouver le jour de différence entre deux dates (à l'exclusion des jours de week-end)] (http://stackoverflow.com/questions/3464268/find-day-difference-between-two-dates- à l'exclusion des week-ends-jours) – George

+0

merci d'avoir répondu, je l'ai déjà essayé mais je n'en avais toujours aucune idée. – Trainee

Répondre

0

J'ai trouvé ma propre solution, mais j'ai oublié de le partager. c'est comment je fais

function myUpdate(dt1, dt2,range){ 
     var msec1 = dt1;    
     var date1 = new Date(msec1); 
     var msec2 = dt2; 
     var date2 = new Date(msec2); 
     var diff = (isFinite(Math.round (date2 - date1)/86400000) && Math.round (date2 - date1)/86400000 || 0); 
     var wEnd=0; 

     if(date1>0 || date2>0){ 
       for(var i=0; i<=diff; i++){ 
        if(date1.getDay() ==6 || date1.getDay()==0){ 
         wEnd = wEnd + 1; 
        } 
        date1.setDate(date1.getDate() + 1); 
       } 
      } 
     range.val(Math.round((diff-wEnd)+1)); 
    }; 

premier u devrait compter la différence de date, le date1 sera vérifier si elle est dimanche ou samedi. alors date1 sera ajouté 1 jusqu'à la valeur de date1 est égal à date2. Si le numéro de téléphone est date1 est samedi ou dimanche, wEnd gagnera 1. donc vous pouvez soustraire diff à wEnd. J'espère que cela peut vous aider les gars

0

La fonction que vous aurez besoin est getUTCDay().

le pseudo-code serait la suivante:
1 - déterminer semaines complètes (jours/7 tronquée)
2 - calculer semaine/week-end: 2 * Résultat = jour de week-end, 5 * Résultat = semaine.
3 - après, le reste et le jour à partir de la semaine détermineront les 1 ou 2 jours supplémentaires

espoir qui aide, laissez-moi savoir si vous avez besoin javascript, - John

Edité, comme l'a demandé. NOTE: modifié votre original pour le test, vous devriez repérer les changements nécessaires à restaurer.

function calcDay(dt1, dt2, range) 
{ 
    var msec1 = "October 13, 2014 11:13:00"; 
    var date1 = new Date(msec1); 
    var msec2 = "October 13, 2013 11:13:00"; 
    var date2 = new Date(msec2); 

    var days; 
    var wdays; 
    var startday; 
    var nLeft; 

    // neither should be zero 
    if(date1>0 && date2>0) { 
     days = Math.round(Math.abs((date2-date1)/86400000)); 
     wdays = Math.round(days/7) * 5; 
     nLeft = days % 7; 
     startday = (date1 > date2) ? date2.getUTCDay() : date1.getUTCDay(); 

     if (startday < 2) { 
      wdays += Math.max(nLeft+startday-1,0); 
     } else if (startday == 6) { 
      wdays += Math.max(nLeft-2,0); 
     } else if (nLeft > (7-startday)) { 
      wdays += (nLeft-2) 
     } else { 
      wdays += Math.min(nLeft, 6-startday) 
     } 
    } 
}; 
+0

Puis-je avoir le javascript? Cz i hv essayé beaucoup mais ne peux toujours pas obtenir le résultat – Trainee

+0

@Trainee - voilà - NOTE: il est écrit pour compter les jours de la semaine, pour les week-ends, vous pouvez soustraire du total, ou calculer la réconciliation vous-même (btw - weekdays est le plus compliqué, pourquoi j'ai fourni que) – John

+0

merci beaucoup pour votre aide john :) – Trainee