Régler la date() à minuit dans les utilisateurs de fuseau horaire avec moment.js
- Je utiliser moment.js pour afficher une date UTC dans le fuseau horaire local:
var date = new Date(Date.UTC(2016,03,30,0,0,0));
var now = new Date();
var diff = (date.getTime()/1000) - (now.getTime()/1000);
var textnode = document.createTextNode(moment(date).format('dddd, DD.MM.YYYY') + ' a las ' + moment(date).format('HH:mm A'));
document.getElementsByClassName("date")[0].appendChild(textnode.cloneNode(true));
Plus tard, j'ai utiliser le diff
variable pour afficher un compte à rebours.
Je voudrais montrer un autre compte à rebours pour tout le monde dans le fuseau horaire local. (À l'aide de la différence jusqu'à son minuit dans leur fuseau horaire, pas en UTC)
Mais je suis struggeling pour le faire fonctionner. Au lieu d'utiliser var date = new Date(Date.UTC(2016,03,30,0,0,0));
j'ai sans doute besoin d'utiliser une fonction de moment.js qui me donne jusqu'à minuit dans le temps aux utilisateurs de la zone.
Le meilleur exemple serait la saint-sylvestre. Si j'utilise UTC tout le monde aurait le même compteur (9 heures), mais dans différentes parties du monde, ce ne serait pas de bon sens. Pour quelqu'un en australie, il devrait être de 2 heures, et pour quelqu'un dans le NOUS 14 heures.
- Lorsque vous construisez votre
date
variable, vous appeler explicitementDate.UTC()
. Tout ce que vous devez faire est de construire un minuit de la date sans à l'aide deDate.UTC()
droit? - merci de me faire sentir stupide 😉 vous avez raison... vous pourriez répondre à cette question, donc je ne peux l'accepter
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr que je comprends votre question, mais je vais vous donner quelques conseils généraux et des conseils.
Lors de l'utilisation de moment.js il y a très peu besoin de toujours utiliser le
Date
objet. Seulement l'utiliser pour interagir avec d'autres Api qui attendent unDate
objet.Afin d'obtenir un moment à l'UTC, il suffit d'utiliser
moment.utc(...)
, en passant les arguments appropriés, tels quemoment.utc([2016,3,30])
oumoment.utc('2016-04-30')
pour minuit le 30 avril de l'UTC.Si vous voulez convertir que de l'utilisateur, heure locale, utilisez l'
.local()
fonction. Par exemple,moment.utc('2016-04-30').local()
permettra de créer un moment avec l'heure locale équivalent à l'heure UTC fourni.Si vous voulez un moment de l'utilisateur, heure locale, alors que serait
moment(...)
, commemoment([2016,3,30])
oumoment('2016-04-30')
pour minuit le 30 avril local temps.Vous pouvez la différence de deux moments à l'aide de la
diff
fonction, qui peut donner la réponse dans les unités spécifiques, tels quem1.diff(m2, 'seconds')
oùm1
etm2
sont moment d'objets.Vous n'avez pas besoin d'appeler
format
deux fois. Juste encapsuler n'importe quel texte que vous voulez outputed avec des crochets..format('dddd, DD.MM.YYYY [a las] HH:mm A')
Vous pourriez examiner moment du support de locale. Si je ne me trompe pas, "las" indique l'espagnol, cependant il n'est pas toujours "las", mais parfois "la", si l'heure est
1
. Aussi, le moment seulement utilise ces mots dans son.calendar()
fonction, par exemple lors de la production d'une phrase comme"mañana a las 13:17"
. À une date régulière formaté avec.format('LLLL')
en espagnol locale serait quelque chose comme:"sábado, 19 de marzo de 2016 13:17"
. Donc, vous voudrez peut-être vérifier que "las", c'est exactement ce que vous voulez dans tous les cas.Le titre de cette question est de savoir comment fixer une date à minuit. Pour cela, je vous recommande d'utiliser du moment
startOf
fonction.m.startOf('day')
donnera définir le momentm
le début de la journée, ce qui est généralement minuit. Gardez à l'esprit que chaque journée commence à minuit dans chaque fuseau horaire. En raison des anomalies comme l'heure d'été, certains jours, vous pourriez commencer à 1:00. Par exemple, cela se produit au Brésil, le 16 octobre cette année.Aussi, si vous avez créé le moment UTC mode, vous pouvez la convertir en mode local, la première avant le début de la journée. Si vous ne voulez pas changer le moment d'objet, assurez-vous de le clone en premier.
Mettre tous ensemble: