En JavaScript, comment puis-je formater un objet date pour qu'il s'imprime sous la forme suivante 10-Aug-2010
?
Ou étendre le Date
comme je l'ai fait à stackoverflow.com/questions/3187790/
En JavaScript, comment puis-je formater un objet date pour qu'il s'imprime sous la forme suivante 10-Aug-2010
?
Pour les formats de date délimités personnalisés, vous devez extraire les composants de date (ou d'heure) à partir d'un DateTimeFormat
(qui fait partie de l'objet API d'internationalisation ECMAScript ), puis créez manuellement une chaîne avec les délimiteurs que vous voulez.
Pour ce faire, vous pouvez utiliser DateTimeFormat#formatToParts
. Vous pourriez déstructurer le tableau, mais ce n'est pas l'idéal, car la sortie du tableau dépend de la locale :
{ // example 1
let f = new Intl.DateTimeFormat('en');
let a = f.formatToParts();
console.log(a);
}
{ // example 2
let f = new Intl.DateTimeFormat('hi');
let a = f.formatToParts();
console.log(a);
}
Le mieux serait de faire correspondre un tableau de formats aux chaînes de caractères résultantes :
function join(t, a, s) {
function format(m) {
let f = new Intl.DateTimeFormat('en', m);
return f.format(t);
}
return a.map(format).join(s);
}
let a = [{day: 'numeric'}, {month: 'short'}, {year: 'numeric'}];
let s = join(new Date, a, '-');
console.log(s);
Vous pouvez également extraire les parties d'un DateTimeFormat
un par un en utilisant DateTimeFormat#format
mais notez que si vous utilisez cette méthode, à partir de mars 2020, il n'y aura plus de frais d'administration. 2020, il y a un bug dans l'implémentation ECMAScript lorsqu'il s'agit de des zéros en tête des minutes et des secondes (ce bogue est contourné par l'approche ci-dessus).
let d = new Date(2010, 7, 5);
let ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d);
let mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d);
let da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d);
console.log(`${da}-${mo}-${ye}`);
Lorsque vous travaillez avec des dates et des heures, il est généralement utile d'utiliser une bibliothèque (ex. moment.js , luxon ) en raison des nombreuses complexités cachées du domaine.
Notez que l'API d'internationalisation ECMAScript, utilisée dans les solutions ci-dessus n'est pas prise en charge dans IE10 ( 0.03% part du marché mondial des navigateurs en février 2020).
Je comprends. ye
est l'année, mo
est le mois et da
est le jour. Ce qui est o
? Qu'est-ce que a
? Qu'est-ce que m
? Pourriez-vous utiliser des noms de variables appropriés ?
Utilisez le bibliothèque date.format :
var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
retours :
Saturday, June 9th, 2007, 5:46:21 PM
Son code pour "L" pour cantiseconds est faux, il devrait enlever la partie "L > 99 ?"... A part ça, c'est assez chouette, mais pas trop bien localisable.
Cette solution est également disponible sous forme de paquet npm : npmjs.com/package/dateformat
Si vous vous donnez la peine d'importer une dépendance externe, je vous recommande d'utiliser moment.js. Il peut faire ce type de formatage de date : momentjs.com/docs/#/affichage Et il a beaucoup plus de fonctionnalités.
Eh bien, ce que je voulais, c'était convertir la date d'aujourd'hui en un MySQL chaîne de date conviviale comme 2012-06-23
et d'utiliser cette chaîne comme paramètre dans une de mes requêtes. La solution simple que j'ai trouvée est la suivante :
var today = new Date().toISOString().slice(0, 10);
Gardez à l'esprit que la solution ci-dessus ne no tenir compte de votre fuseau horaire compensation.
Vous pouvez envisager d'utiliser cette fonction à la place :
function toJSONLocal (date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON().slice(0, 10);
}
Cela vous donnera la date correcte au cas où vous exécuteriez ce code autour du début/de la fin de la journée.
var date = new Date();
function toLocal(date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON();
}
function toJSONLocal(date) {
var local = new Date(date);
local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
return local.toJSON().slice(0, 10);
}
// check out your devtools console
console.log(date.toJSON());
console.log(date.toISOString());
console.log(toLocal(date));
console.log(toJSONLocal(date));
Vous pouvez faire new Date(date + " UTC")
pour tromper le fuseau horaire, et vous pouvez éliminer la ligne setMinutes. Mec, javascript est sale
Si vous êtes utilisant déjà jQuery UI dans votre projet, vous pourriez le faire de cette façon :
var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));
// formatted will be 'Jul 8, 2014'
Des options de format de date sont disponibles pour les afficheurs de date. aquí .
Je pense que vous pouvez simplement utiliser le hors normes Méthode de datation toLocaleFormat(formatString)
formatString : Une chaîne de format dans le même format que celui attendu par la fonction strftime()
en C.
var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011
Références :
ToLocaleFormat() semble ne fonctionner que dans Firefox. IE et Chrome ne fonctionnent pas dans mon cas.
Chrome dispose de la méthode .toLocaleString('en'). Comme il semble que le nouveau navigateur supporte cette méthode developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
336 votes
Comme d'habitude : attention LE MOIS est indexé à Zéro ! Donc janvier est zéro et non un...
34 votes
Attention aussi,
myDate.getDay()
ne renvoie pas le jour de la semaine, mais la fonction lieu du jour de la semaine liés à la semaine.myDate.getDate()
renvoie le jour de semaine actuel .4 votes
Pour le formatage des DateTimes en javascript, utilisez la fonction
Intl.DateTimeFormat
objet. Je le décris dans mon post : Poste . Je crée une solution en ligne pour votre réponse enIntl.DateTimeFormat
Vérifier en ligne16 votes
Vous pouvez utiliser
toLocaleDateString
6 votes
@onmyway tu ne peux pas en fait. developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/
1 votes
Si vous cherchez comment analyser une chaîne de caractères pour obtenir un objet Date, voir Conversion d'une chaîne en date en JavaScript .