datepicker de jquery getTime pas UTC
J'ai le code suivant qui fonctionne très bien jusqu'à ce que le datepicker atteint BST.
var i;
function showEventDates(date) {
for (i = 0; i < startDates.length; i++) {
if (date.getTime() == startDates[i]) {
return [true, 'eventDay'];
}
}
return [false, ''];
}
var startDates = new Array();
$("select.startdates").find("option").each( function() {
startDates.push(Date.UTC.apply(Date, this.value.split(",").map(Number)));
});
$('#mydate').datepicker({
beforeShowDay: showEventDates
});
Au cours de la BST, la ligne if (date.getTime() == startDates[i]) {
renvoie faux car il y a une heure de décalage.
Des idées comment je peux obtenir ces pour un match? Je pense que c'est le datepicker temps ce n'est pas l'heure UTC.
EDIT:
Un exemple d'une option de sélectionner.startdates est
<option value="2013, 2, 1">01/03/2013</option>
- Le temps peut être localisée, je vais aller regarder la doc
- Ouais... une idée de comment je peux "unlocalize" c'??
- le
getTimezoneOffset
méthode de la Date objet renvoie le décalage en minutes. Vous pouvez l'utiliser pour convertir une date au format UTC. - qui sonne bien. J'ai frit mon cerveau à la recherche à ce moment. Pouvez-vous donner un indice quant à la façon dont j'avais l'utiliser?
Vous devez vous connecter pour publier un commentaire.
Il ressemble à la datepicker ne retourne pas les dates UTC, mais locales (qui est en fait la valeur par défaut en Javascript).
Pour convertir vos construits dates à l'heure locale:
Normalement, je voudrais utiliser le
new Date(year, month, day)
constructeur au lieu de laDate.UTC
fonction, mais vous ne pouvez pas utiliserapply
avec leDate
constructeur.Si vous préférez laisser votre startDates tableau en UTC, puis vous avez besoin de convertir le datepicker les dates de l'UTC:
NB: choisir un ou l'autre de ces méthodes, mais pas les deux, vous allez vous retrouver avec le même problème... 🙂
J'entends il y a quelques fuseau horaire mises à jour de jQuery datetimepicker de sorte que vous pouvez vérifier sur le site avant de commencer, cependant voici ce que j'ai fait pour obtenir le choix de la date & heure UTC format.
D'abord créer le datetimepicker et l'utilisation de villes, au lieu de +0500 GMT parce que si vous utilisez des décalages GMT vous avez à prendre en compte l'heure d'été - et c'est un cauchemar.
Suivant, prenez la timezoneJS.Date de bibliothèque à partir de mde sur Github (REMARQUE: vous devrez également télécharger le bon fuseau horaire de fichiers de votre région, il suffit de suivre les instructions du README)
Maintenant lorsque l'utilisateur sélectionne une date à la onSelect méthode est appelée.
Pas exactement indolore, mais il prend soin de l'avancée des choses pour vous.
L'inverse de ce pour remplir un datetimepicker avec une date et d'un fuseau horaire à partir d'un horodatage UTC ressemble à ceci:
Je ne suis pas certain si vous avez besoin de la setDate partie sur la dernière ligne, mais ne pouvait pas faire de mal.
basé sur @Martijn commentaire: