2010-11-17 23 views
0

J'affiche un message entre samedi à 18h et dimanche 4h. La dernière fois que j'ai dû faire cela, cela n'a pas fonctionné parce que je n'ai pas pris en compte le temps UTC devenant négatif en le changeant en heure de New York.Est-ce que ce code temporel JS fonctionnera? Puis-je le faire mieux?

Je suis en train de faire le bon calcul (affichage aux moments appropriés)? Dois-je mettre le code de conversion UTC dans sa propre fonction? Est-ce le pire que tu as jamais vu?

- jquery est appelé -

$(document).ready(function() { 
var dayTime = new Date(); 
var day = dayTime.getUTCDay(); 
var hour = dayTime.getUTCHours(); 
    //alert(day.toString()+" "+hour.toString()); 
    if (hour >= 5){ 
     hour = hour-5;   
    } 
    else{ 
     hour = hour+19; 
      if(day > 0){ 
       day--; 
      } 
      else{ 
       day = 6;  
      } 
    } 
    //alert(day.toString()+" "+hour.toString()); 
    if ((day == 6 && hour >= 18) || (day == 0 && hour < 4)){    
    } 
    else{ 
     $('#warning').hide(); //Want this message to show if js is disabled as well 
    } 
}); 

Répondre

2

Pourquoi avez-vous besoin même ce genre de choses UTC? Il suffit de travailler avec l'heure locale:

var day = dayTime.getDay(); 
var hour = dayTime.getHours(); 

Et vous pouvez nettoyer ce un peu conditionnel aussi:

if (!(day == 6 && hour >= 18) && !(day == 0 && hour < 4)) { 
    $('#warning').hide(); 
} 
+0

Nous avons des utilisateurs internationaux, donc je pensais que la maintenance est EDT et je dois en tenir compte car l'heure locale serait leur heure locale. Merci pour l'aide avec le conditionnel. –

+0

J'espérais obtenir plus de commentaires des autres sur le script en général, mais cela m'a aidé, alors merci! –

0

Cela devrait vous obtenir le temps de votre serveur:

var dayTime = new Date(); 
localOffset = dayTime.getTimezoneOffset() * 60000; 
serverOffset = 5 * 60 * 60000; 
dayTime = new Date(dayTime.getTime() + (localOffset - serverOffset)); 

Jouez avec cette "5" dans le décalage du serveur; c'est les heures. Il se peut que ce soit un -5; Je ne suis pas vraiment sûr.

En outre, cela va briser toutes les économies d'heures. Vous devrez le détecter et modifier serverOffset.