J'ai un Date
objet. Comment rendre la title
partie de l'extrait de code suivant?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
J'ai la partie "temps relatif en mots" d'une autre bibliothèque.
J'ai essayé ce qui suit:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
Mais cela me donne:
"2010-4-2T3:19"
javascript
datetime
iso8601
James A. Rosen
la source
la source
new Date("xx").toISOString()
produitNaN-NaN-NaNTNaN:NaN:NaN.NZ
L'implémentation native lève RangeException.Voir le dernier exemple à la page https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date :
la source
<abbr title="2010-04-02T14:12:07">
) n'a pas de fuseau horaire. Peut-être qu'ils voulaient l'heure locale, ce qui aurait du sens pour une chaîne horaire d'interface utilisateur?Presque toutes les méthodes to-ISO sur le Web suppriment les informations de fuseau horaire en appliquant une conversion en temps ulu "Z" (UTC) avant de sortir la chaîne. Le navigateur natif .toISOString () supprime également les informations de fuseau horaire.
Cela supprime des informations précieuses, car le serveur ou le destinataire peut toujours convertir une date ISO complète en heure zoulou ou selon le fuseau horaire requis, tout en obtenant les informations de fuseau horaire de l'expéditeur.
La meilleure solution que j'ai rencontrée consiste à utiliser la bibliothèque javascript Moment.js et à utiliser le code suivant:
Pour obtenir l'heure ISO actuelle avec des informations de fuseau horaire et des millisecondes
Pour obtenir l'heure ISO d'un objet Date JavaScript natif avec des informations de fuseau horaire mais sans millisecondes
Ceci peut être combiné avec Date.js pour obtenir des fonctions comme Date.today () dont le résultat peut ensuite être passé à moment.
Une chaîne de date formatée comme celle-ci est compilante JSON et se prête bien à être stockée dans une base de données. Python et C # semblent l'aimer.
la source
moment(new Date()).format()
. "A partir de la version 1.5.0, l'appel du format moment # sans format sera par défaut ... le format ISO8601YYYY-MM-DDTHH:mm:ssZ
". Doc: faites défiler vers le haut à partir de momentjs.com/docs/#/displaying/fromnowmoment().format()
"2015-03-04T17:16:05+03:00"
(new Date()).toISOString()
"2015-03-04T14:16:24.555Z"
La question posée était le format ISO avec une précision réduite. Voila:
En supposant que le Z de fin est voulu, sinon omettez simplement.
la source
Plus court, mais non pris en charge par Internet Explorer 8 et versions antérieures:
la source
Si vous n'avez pas besoin de prendre en charge IE7, voici un excellent hack concis:
la source
toJSON
plutôt la méthode de la date .JSON.stringify
l'utilise de toute façon sous les couvertures.JSON
objet, mais pas dans certains modes de compatibilité. Voir stackoverflow.com/questions/4715373/….toISOString()
?Je ne veux généralement pas afficher de date UTC car les clients n'aiment pas faire la conversion dans leur tête. Pour afficher une date ISO locale , j'utilise la fonction:
La fonction ci-dessus omet les informations de décalage de fuseau horaire (sauf si l'heure locale se trouve être UTC), j'utilise donc la fonction ci-dessous pour afficher le décalage local dans un seul emplacement. Vous pouvez également ajouter sa sortie aux résultats de la fonction ci-dessus si vous souhaitez afficher le décalage à chaque fois:
toLocalIsoString
utilisepad
. Si nécessaire, cela fonctionne comme presque n'importe quelle fonction de pad, mais pour être complet, voici ce que j'utilise:la source
Il manque un «+» après le «T»
devrait le faire.
Pour les zéros principaux, vous pouvez utiliser ceci à partir d' ici :
L'utiliser comme ceci:
la source
la source
Le problème avec toISOString est qu'il ne donne la date / heure qu'en "Z".
ISO-8601 définit également l'heure et la différence de fuseau horaire en heures et minutes, sous les formes comme 2016-07-16T19: 20: 30 + 5: 30 (lorsque le fuseau horaire est en avance UTC) et 2016-07-16T19: 20: 30-01 : 00 (lorsque le fuseau horaire est derrière UTC).
Je ne pense pas que ce soit une bonne idée d'utiliser un autre plugin, moment.js pour une si petite tâche, surtout quand vous pouvez l'obtenir avec quelques lignes de code.
Une fois que vous avez décalé le fuseau horaire en heures et minutes, vous pouvez l'ajouter à une chaîne datetime.
J'ai écrit un article de blog à ce sujet: http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
la source
Je voudrais simplement utiliser cette petite extension pour
Date
- http://blog.stevenlevithan.com/archives/date-time-formatla source
J'ai pu obtenir une sortie en dessous avec très moins de code.
Production:
la source
J'ai trouvé les bases de Stack Overflow quelque part (je pense que cela faisait partie d'un autre code de Stack Exchange au golf), et je l'ai amélioré pour qu'il fonctionne sur Internet Explorer 10 ou une version antérieure également. C'est moche, mais ça fait le boulot.
la source
Pour étendre la grande réponse concise de Sean avec du sucre et une syntaxe moderne:
Ensuite, par exemple.
la source