1
votes

new Date () ont une sortie différente dans app.js et ejs

<%= new Date() %>

3 commentaires

Lorsque j'essaye d'organiser un événement à 9 h 00 IST, il est enregistré au format UTC sous le nom 01: **: **. Il devrait l'enregistrer à 3h30 UTC car je l'organise à partir du sélecteur de date de mon navigateur.


J'ai essayé de changer l'heure du serveur en IST. Et quand je vérifie la date à l'aide du terminal, il me montre l'heure correcte dans IST. Mais en arrière-plan, il l'enregistre comme heure locale de Singapour.


Quelqu'un a-t-il une idée de la raison pour laquelle le terminal donne IST et le serveur enregistre les données en UTC en soustrayant 8 heures?


4 Réponses :


1
votes

new Date(Date.now()).toLocaleString()

Cliquez ici Out put is there

OU

new Date().toLocaleString()

Échantillonner les ejs backend et frontend de nodejs en utilisant la fonction date 19/03/2019, 10:58:31


3 commentaires

getFullYear () Obtenir l'année sous forme de nombre à quatre chiffres (aaaa) getMonth () Obtenir le mois sous forme de nombre (0-11) getDate () Obtenir le jour sous forme de nombre (1-31) getHours () Obtenir l'heure (0 -23) getMinutes () Récupère la minute (0-59) getSeconds () Récupère la seconde (0-59) getMilliseconds () Récupère la milliseconde (0-999) getTime () Récupère l'heure (millisecondes depuis le 1er janvier 1970) getDay () Récupère le jour de la semaine sous forme de nombre (0-6) Date.now () Récupère l'heure. ECMAScript 5.


si vous voulez que la même date et l'heure soient affichées côté client, vous pouvez passer les données du côté serveur au côté client étape 1: app.js res.render ('pages / home', {"serverdate": new Date (). toLocaleString ( )}); étape 2: fichier ejs <% = serverdate%>


Gardons cela à l'esprit et essaierons d'utiliser .tolocaleString.



0
votes

new Date () génère une valeur de date, qui est un nombre de millisecondes depuis une heure de base, généralement le 1er janvier 1970. La valeur exacte dépend du réglage de l'horloge sur le serveur où la valeur est générée.

Cette valeur peut être affichée de différentes manières.

En fonction des paramètres par défaut de l'environnement client, que je sois en UTC, ou dans le fuseau horaire local [ou dans un autre], et dans divers formats.

Notez que 04h50 UTC et 12h55 GMT + 0800 sont distants d'environ 5 minutes, mais dans des fuseaux horaires différents. S'il s'agissait de deux tests, exécutez 5 minutes à part, cela expliquerait la différence.

Au lieu d'utiliser la méthode toString () par défaut pour afficher les heures, utilisez getTime () pour voir quel est le nombre brut.


0 commentaires

0
votes

Bonne journée, N'oubliez pas que app.js s'exécute côté serveur et ejs sur le navigateur, le format de date du navigateur est différent de celui du serveur.


3 commentaires

Selon les documents, EJS est un langage de création de modèles simple qui vous permet de générer un balisage HTML avec du JavaScript brut. Je pense qu'il exécute le fichier sur le serveur et envoie un simple HTML au client. Ai-je raison?


Vous avez raison @VikramRay, imprimez simplement votre variable d passée du serveur au site client par <% = d%> et votre format sera cohérent.


C'est compris . Merci.



0
votes

Ce ne sont pas deux dates différentes mais la même date dans des fuseaux horaires différents.

La raison du format différent est la façon dont la méthode toString () est écrite pour l'objet Date, la méthode toString () est écrite de manière à renvoyer la date au format UTC donc lorsque vous l'envoyez sur le navigateur, elle appelle la toString pour la date car tout sera converti en une chaîne avant le montage.

nouveau Date () invoque le constructeur et renvoie l'instance de date qui aura également toutes ses méthodes, cependant, Date () est une fonction qui renvoie la date stringifiée.

Voir les exemples ci-dessous

date = new Date('Tue Mar 19 2019 12:55:52 GMT+0800')

console.log(date)
console.log('toString-%s',date.toString())
console.log('toString-%s',''+date)
console.log('Tue Mar 19 2019 12:55:52 GMT+0800')
//Managing offsets
console.log(Date('Tue Mar 19 2019 12:55:52 GMT+0800'))
date.setTime(date.getTime() + (8-5.5)*60*1000 );
console.log(date)


0 commentaires