Existe-t-il un moyen de connaître en JavaScript le format de date courte utilisé dans le Panneau de configuration -> Paramètres régionaux et linguistiques?
Je sais que l’utilisation de la combinaison de la suite nous permet d’obtenir le format Nom complet de la locale
toString()
toLocaleString()
toLocaleDateString()
toLocaleTimeString()
Mais il n'y a pas de fonction directe dans JavaScript comme toLocaleShortDateString()
.
Existe-t-il des scripts disponibles pour connaître le paramètre utilisateur?
Merci.
function getLocaleDateString(){
var formats = {
"ar-SA" : "dd/MM/yy",
"bg-BG" : "dd.M.yyyy",
"ca-ES" : "dd/MM/yyyy",
"zh-TW" : "yyyy/M/d",
"cs-CZ" : "d.M.yyyy",
"da-DK" : "dd-MM-yyyy",
"de-DE" : "dd.MM.yyyy",
"el-GR" : "d/M/yyyy",
"en-US" : "M/d/yyyy",
"fi-FI" : "d.M.yyyy",
"fr-FR" : "dd/MM/yyyy",
"he-IL" : "dd/MM/yyyy",
"hu-HU" : "yyyy. MM. dd.",
"is-IS" : "d.M.yyyy",
"it-IT" : "dd/MM/yyyy",
"ja-JP" : "yyyy/MM/dd",
"ko-KR" : "yyyy-MM-dd",
"nl-NL" : "d-M-yyyy",
"nb-NO" : "dd.MM.yyyy",
"pl-PL" : "yyyy-MM-dd",
"pt-BR" : "d/M/yyyy",
"ro-RO" : "dd.MM.yyyy",
"ru-RU" : "dd.MM.yyyy",
"hr-HR" : "d.M.yyyy",
"sk-SK" : "d. M. yyyy",
"sq-AL" : "yyyy-MM-dd",
"sv-SE" : "yyyy-MM-dd",
"th-TH" : "d/M/yyyy",
"tr-TR" : "dd.MM.yyyy",
"ur-PK" : "dd/MM/yyyy",
"id-ID" : "dd/MM/yyyy",
"uk-UA" : "dd.MM.yyyy",
"be-BY" : "dd.MM.yyyy",
"sl-SI" : "d.M.yyyy",
"et-EE" : "d.MM.yyyy",
"lv-LV" : "yyyy.MM.dd.",
"lt-LT" : "yyyy.MM.dd",
"fa-IR" : "MM/dd/yyyy",
"vi-VN" : "dd/MM/yyyy",
"hy-AM" : "dd.MM.yyyy",
"az-Latn-AZ" : "dd.MM.yyyy",
"eu-ES" : "yyyy/MM/dd",
"mk-MK" : "dd.MM.yyyy",
"af-ZA" : "yyyy/MM/dd",
"ka-GE" : "dd.MM.yyyy",
"fo-FO" : "dd-MM-yyyy",
"hi-IN" : "dd-MM-yyyy",
"ms-MY" : "dd/MM/yyyy",
"kk-KZ" : "dd.MM.yyyy",
"ky-KG" : "dd.MM.yy",
"sw-KE" : "M/d/yyyy",
"uz-Latn-UZ" : "dd/MM yyyy",
"tt-RU" : "dd.MM.yyyy",
"pa-IN" : "dd-MM-yy",
"gu-IN" : "dd-MM-yy",
"ta-IN" : "dd-MM-yyyy",
"te-IN" : "dd-MM-yy",
"kn-IN" : "dd-MM-yy",
"mr-IN" : "dd-MM-yyyy",
"sa-IN" : "dd-MM-yyyy",
"mn-MN" : "yy.MM.dd",
"gl-ES" : "dd/MM/yy",
"kok-IN" : "dd-MM-yyyy",
"syr-SY" : "dd/MM/yyyy",
"dv-MV" : "dd/MM/yy",
"ar-IQ" : "dd/MM/yyyy",
"zh-CN" : "yyyy/M/d",
"de-CH" : "dd.MM.yyyy",
"en-GB" : "dd/MM/yyyy",
"es-MX" : "dd/MM/yyyy",
"fr-BE" : "d/MM/yyyy",
"it-CH" : "dd.MM.yyyy",
"nl-BE" : "d/MM/yyyy",
"nn-NO" : "dd.MM.yyyy",
"pt-PT" : "dd-MM-yyyy",
"sr-Latn-CS" : "d.M.yyyy",
"sv-FI" : "d.M.yyyy",
"az-Cyrl-AZ" : "dd.MM.yyyy",
"ms-BN" : "dd/MM/yyyy",
"uz-Cyrl-UZ" : "dd.MM.yyyy",
"ar-EG" : "dd/MM/yyyy",
"zh-HK" : "d/M/yyyy",
"de-AT" : "dd.MM.yyyy",
"en-AU" : "d/MM/yyyy",
"es-ES" : "dd/MM/yyyy",
"fr-CA" : "yyyy-MM-dd",
"sr-Cyrl-CS" : "d.M.yyyy",
"ar-LY" : "dd/MM/yyyy",
"zh-SG" : "d/M/yyyy",
"de-LU" : "dd.MM.yyyy",
"en-CA" : "dd/MM/yyyy",
"es-GT" : "dd/MM/yyyy",
"fr-CH" : "dd.MM.yyyy",
"ar-DZ" : "dd-MM-yyyy",
"zh-MO" : "d/M/yyyy",
"de-LI" : "dd.MM.yyyy",
"en-NZ" : "d/MM/yyyy",
"es-CR" : "dd/MM/yyyy",
"fr-LU" : "dd/MM/yyyy",
"ar-MA" : "dd-MM-yyyy",
"en-IE" : "dd/MM/yyyy",
"es-PA" : "MM/dd/yyyy",
"fr-MC" : "dd/MM/yyyy",
"ar-TN" : "dd-MM-yyyy",
"en-ZA" : "yyyy/MM/dd",
"es-DO" : "dd/MM/yyyy",
"ar-OM" : "dd/MM/yyyy",
"en-JM" : "dd/MM/yyyy",
"es-VE" : "dd/MM/yyyy",
"ar-YE" : "dd/MM/yyyy",
"en-029" : "MM/dd/yyyy",
"es-CO" : "dd/MM/yyyy",
"ar-SY" : "dd/MM/yyyy",
"en-BZ" : "dd/MM/yyyy",
"es-PE" : "dd/MM/yyyy",
"ar-JO" : "dd/MM/yyyy",
"en-TT" : "dd/MM/yyyy",
"es-AR" : "dd/MM/yyyy",
"ar-LB" : "dd/MM/yyyy",
"en-ZW" : "M/d/yyyy",
"es-EC" : "dd/MM/yyyy",
"ar-KW" : "dd/MM/yyyy",
"en-PH" : "M/d/yyyy",
"es-CL" : "dd-MM-yyyy",
"ar-AE" : "dd/MM/yyyy",
"es-UY" : "dd/MM/yyyy",
"ar-BH" : "dd/MM/yyyy",
"es-PY" : "dd/MM/yyyy",
"ar-QA" : "dd/MM/yyyy",
"es-BO" : "dd/MM/yyyy",
"es-SV" : "dd/MM/yyyy",
"es-HN" : "dd/MM/yyyy",
"es-NI" : "dd/MM/yyyy",
"es-PR" : "dd/MM/yyyy",
"am-ET" : "d/M/yyyy",
"tzm-Latn-DZ" : "dd-MM-yyyy",
"iu-Latn-CA" : "d/MM/yyyy",
"sma-NO" : "dd.MM.yyyy",
"mn-Mong-CN" : "yyyy/M/d",
"Gd-GB" : "dd/MM/yyyy",
"en-MY" : "d/M/yyyy",
"prs-AF" : "dd/MM/yy",
"bn-BD" : "dd-MM-yy",
"wo-SN" : "dd/MM/yyyy",
"rw-RW" : "M/d/yyyy",
"qut-GT" : "dd/MM/yyyy",
"sah-RU" : "MM.dd.yyyy",
"gsw-FR" : "dd/MM/yyyy",
"co-FR" : "dd/MM/yyyy",
"oc-FR" : "dd/MM/yyyy",
"mi-NZ" : "dd/MM/yyyy",
"ga-IE" : "dd/MM/yyyy",
"se-SE" : "yyyy-MM-dd",
"br-FR" : "dd/MM/yyyy",
"smn-FI" : "d.M.yyyy",
"moh-CA" : "M/d/yyyy",
"arn-CL" : "dd-MM-yyyy",
"ii-CN" : "yyyy/M/d",
"dsb-DE" : "d. M. yyyy",
"ig-NG" : "d/M/yyyy",
"kl-GL" : "dd-MM-yyyy",
"lb-LU" : "dd/MM/yyyy",
"ba-RU" : "dd.MM.yy",
"nso-ZA" : "yyyy/MM/dd",
"quz-BO" : "dd/MM/yyyy",
"yo-NG" : "d/M/yyyy",
"ha-Latn-NG" : "d/M/yyyy",
"fil-PH" : "M/d/yyyy",
"ps-AF" : "dd/MM/yy",
"fy-NL" : "d-M-yyyy",
"ne-NP" : "M/d/yyyy",
"se-NO" : "dd.MM.yyyy",
"iu-Cans-CA" : "d/M/yyyy",
"sr-Latn-RS" : "d.M.yyyy",
"si-LK" : "yyyy-MM-dd",
"sr-Cyrl-RS" : "d.M.yyyy",
"lo-LA" : "dd/MM/yyyy",
"km-KH" : "yyyy-MM-dd",
"cy-GB" : "dd/MM/yyyy",
"bo-CN" : "yyyy/M/d",
"sms-FI" : "d.M.yyyy",
"as-IN" : "dd-MM-yyyy",
"ml-IN" : "dd-MM-yy",
"en-IN" : "dd-MM-yyyy",
"or-IN" : "dd-MM-yy",
"bn-IN" : "dd-MM-yy",
"tk-TM" : "dd.MM.yy",
"bs-Latn-BA" : "d.M.yyyy",
"mt-MT" : "dd/MM/yyyy",
"sr-Cyrl-ME" : "d.M.yyyy",
"se-FI" : "d.M.yyyy",
"zu-ZA" : "yyyy/MM/dd",
"xh-ZA" : "yyyy/MM/dd",
"tn-ZA" : "yyyy/MM/dd",
"hsb-DE" : "d. M. yyyy",
"bs-Cyrl-BA" : "d.M.yyyy",
"tg-Cyrl-TJ" : "dd.MM.yy",
"sr-Latn-BA" : "d.M.yyyy",
"smj-NO" : "dd.MM.yyyy",
"rm-CH" : "dd/MM/yyyy",
"smj-SE" : "yyyy-MM-dd",
"quz-EC" : "dd/MM/yyyy",
"quz-PE" : "dd/MM/yyyy",
"hr-BA" : "d.M.yyyy.",
"sr-Latn-ME" : "d.M.yyyy",
"sma-SE" : "yyyy-MM-dd",
"en-SG" : "d/M/yyyy",
"ug-CN" : "yyyy-M-d",
"sr-Cyrl-BA" : "d.M.yyyy",
"es-US" : "M/d/yyyy"
};
return formats[navigator.language] || 'dd/MM/yyyy';
}
Je pense que c'est la meilleure façon de le faire ...
var date = new Date();
var options = {
weekday: "short",
year: "numeric",
month: "2-digit",
day: "numeric"
};
console.log(
date.toLocaleDateString("en", options) //en is language option, you may specify..
);
Plus d'options et leurs exemples ....
Option Values and sample output
weekday narrow M
short Mon
long Monday
year 2-digit 01
numeric 2001
month 2-digit 01
numeric 1
narrow J
short Jan
long January
day 2-digit 01
numeric 1
hour 2-digit 12 AM
numeric 12 AM
minute 2-digit 0
numeric 0
second 2-digit 0
numeric 0
timeZoneName short 1/1/2001 GMT+00:00
long 1/1/2001 GMT+00:00
function getLocaleShortDateString(d)
{
var f={"ar-SA":"dd/MM/yy","bg-BG":"dd.M.yyyy","ca-ES":"dd/MM/yyyy","zh-TW":"yyyy/M/d","cs-CZ":"d.M.yyyy","da-DK":"dd-MM-yyyy","de-DE":"dd.MM.yyyy","el-GR":"d/M/yyyy","en-US":"M/d/yyyy","fi-FI":"d.M.yyyy","fr-FR":"dd/MM/yyyy","he-IL":"dd/MM/yyyy","hu-HU":"yyyy. MM. dd.","is-IS":"d.M.yyyy","it-IT":"dd/MM/yyyy","ja-JP":"yyyy/MM/dd","ko-KR":"yyyy-MM-dd","nl-NL":"d-M-yyyy","nb-NO":"dd.MM.yyyy","pl-PL":"yyyy-MM-dd","pt-BR":"d/M/yyyy","ro-RO":"dd.MM.yyyy","ru-RU":"dd.MM.yyyy","hr-HR":"d.M.yyyy","sk-SK":"d. M. yyyy","sq-AL":"yyyy-MM-dd","sv-SE":"yyyy-MM-dd","th-TH":"d/M/yyyy","tr-TR":"dd.MM.yyyy","ur-PK":"dd/MM/yyyy","id-ID":"dd/MM/yyyy","uk-UA":"dd.MM.yyyy","be-BY":"dd.MM.yyyy","sl-SI":"d.M.yyyy","et-EE":"d.MM.yyyy","lv-LV":"yyyy.MM.dd.","lt-LT":"yyyy.MM.dd","fa-IR":"MM/dd/yyyy","vi-VN":"dd/MM/yyyy","hy-AM":"dd.MM.yyyy","az-Latn-AZ":"dd.MM.yyyy","eu-ES":"yyyy/MM/dd","mk-MK":"dd.MM.yyyy","af-ZA":"yyyy/MM/dd","ka-GE":"dd.MM.yyyy","fo-FO":"dd-MM-yyyy","hi-IN":"dd-MM-yyyy","ms-MY":"dd/MM/yyyy","kk-KZ":"dd.MM.yyyy","ky-KG":"dd.MM.yy","sw-KE":"M/d/yyyy","uz-Latn-UZ":"dd/MM yyyy","tt-RU":"dd.MM.yyyy","pa-IN":"dd-MM-yy","gu-IN":"dd-MM-yy","ta-IN":"dd-MM-yyyy","te-IN":"dd-MM-yy","kn-IN":"dd-MM-yy","mr-IN":"dd-MM-yyyy","sa-IN":"dd-MM-yyyy","mn-MN":"yy.MM.dd","gl-ES":"dd/MM/yy","kok-IN":"dd-MM-yyyy","syr-SY":"dd/MM/yyyy","dv-MV":"dd/MM/yy","ar-IQ":"dd/MM/yyyy","zh-CN":"yyyy/M/d","de-CH":"dd.MM.yyyy","en-GB":"dd/MM/yyyy","es-MX":"dd/MM/yyyy","fr-BE":"d/MM/yyyy","it-CH":"dd.MM.yyyy","nl-BE":"d/MM/yyyy","nn-NO":"dd.MM.yyyy","pt-PT":"dd-MM-yyyy","sr-Latn-CS":"d.M.yyyy","sv-FI":"d.M.yyyy","az-Cyrl-AZ":"dd.MM.yyyy","ms-BN":"dd/MM/yyyy","uz-Cyrl-UZ":"dd.MM.yyyy","ar-EG":"dd/MM/yyyy","zh-HK":"d/M/yyyy","de-AT":"dd.MM.yyyy","en-AU":"d/MM/yyyy","es-ES":"dd/MM/yyyy","fr-CA":"yyyy-MM-dd","sr-Cyrl-CS":"d.M.yyyy","ar-LY":"dd/MM/yyyy","zh-SG":"d/M/yyyy","de-LU":"dd.MM.yyyy","en-CA":"dd/MM/yyyy","es-GT":"dd/MM/yyyy","fr-CH":"dd.MM.yyyy","ar-DZ":"dd-MM-yyyy","zh-MO":"d/M/yyyy","de-LI":"dd.MM.yyyy","en-NZ":"d/MM/yyyy","es-CR":"dd/MM/yyyy","fr-LU":"dd/MM/yyyy","ar-MA":"dd-MM-yyyy","en-IE":"dd/MM/yyyy","es-PA":"MM/dd/yyyy","fr-MC":"dd/MM/yyyy","ar-TN":"dd-MM-yyyy","en-ZA":"yyyy/MM/dd","es-DO":"dd/MM/yyyy","ar-OM":"dd/MM/yyyy","en-JM":"dd/MM/yyyy","es-VE":"dd/MM/yyyy","ar-YE":"dd/MM/yyyy","en-029":"MM/dd/yyyy","es-CO":"dd/MM/yyyy","ar-SY":"dd/MM/yyyy","en-BZ":"dd/MM/yyyy","es-PE":"dd/MM/yyyy","ar-JO":"dd/MM/yyyy","en-TT":"dd/MM/yyyy","es-AR":"dd/MM/yyyy","ar-LB":"dd/MM/yyyy","en-ZW":"M/d/yyyy","es-EC":"dd/MM/yyyy","ar-KW":"dd/MM/yyyy","en-PH":"M/d/yyyy","es-CL":"dd-MM-yyyy","ar-AE":"dd/MM/yyyy","es-UY":"dd/MM/yyyy","ar-BH":"dd/MM/yyyy","es-PY":"dd/MM/yyyy","ar-QA":"dd/MM/yyyy","es-BO":"dd/MM/yyyy","es-SV":"dd/MM/yyyy","es-HN":"dd/MM/yyyy","es-NI":"dd/MM/yyyy","es-PR":"dd/MM/yyyy","am-ET":"d/M/yyyy","tzm-Latn-DZ":"dd-MM-yyyy","iu-Latn-CA":"d/MM/yyyy","sma-NO":"dd.MM.yyyy","mn-Mong-CN":"yyyy/M/d","Gd-GB":"dd/MM/yyyy","en-MY":"d/M/yyyy","prs-AF":"dd/MM/yy","bn-BD":"dd-MM-yy","wo-SN":"dd/MM/yyyy","rw-RW":"M/d/yyyy","qut-GT":"dd/MM/yyyy","sah-RU":"MM.dd.yyyy","gsw-FR":"dd/MM/yyyy","co-FR":"dd/MM/yyyy","oc-FR":"dd/MM/yyyy","mi-NZ":"dd/MM/yyyy","ga-IE":"dd/MM/yyyy","se-SE":"yyyy-MM-dd","br-FR":"dd/MM/yyyy","smn-FI":"d.M.yyyy","moh-CA":"M/d/yyyy","arn-CL":"dd-MM-yyyy","ii-CN":"yyyy/M/d","dsb-DE":"d. M. yyyy","ig-NG":"d/M/yyyy","kl-GL":"dd-MM-yyyy","lb-LU":"dd/MM/yyyy","ba-RU":"dd.MM.yy","nso-ZA":"yyyy/MM/dd","quz-BO":"dd/MM/yyyy","yo-NG":"d/M/yyyy","ha-Latn-NG":"d/M/yyyy","fil-PH":"M/d/yyyy","ps-AF":"dd/MM/yy","fy-NL":"d-M-yyyy","ne-NP":"M/d/yyyy","se-NO":"dd.MM.yyyy","iu-Cans-CA":"d/M/yyyy","sr-Latn-RS":"d.M.yyyy","si-LK":"yyyy-MM-dd","sr-Cyrl-RS":"d.M.yyyy","lo-LA":"dd/MM/yyyy","km-KH":"yyyy-MM-dd","cy-GB":"dd/MM/yyyy","bo-CN":"yyyy/M/d","sms-FI":"d.M.yyyy","as-IN":"dd-MM-yyyy","ml-IN":"dd-MM-yy","en-IN":"dd-MM-yyyy","or-IN":"dd-MM-yy","bn-IN":"dd-MM-yy","tk-TM":"dd.MM.yy","bs-Latn-BA":"d.M.yyyy","mt-MT":"dd/MM/yyyy","sr-Cyrl-ME":"d.M.yyyy","se-FI":"d.M.yyyy","zu-ZA":"yyyy/MM/dd","xh-ZA":"yyyy/MM/dd","tn-ZA":"yyyy/MM/dd","hsb-DE":"d. M. yyyy","bs-Cyrl-BA":"d.M.yyyy","tg-Cyrl-TJ":"dd.MM.yy","sr-Latn-BA":"d.M.yyyy","smj-NO":"dd.MM.yyyy","rm-CH":"dd/MM/yyyy","smj-SE":"yyyy-MM-dd","quz-EC":"dd/MM/yyyy","quz-PE":"dd/MM/yyyy","hr-BA":"d.M.yyyy.","sr-Latn-ME":"d.M.yyyy","sma-SE":"yyyy-MM-dd","en-SG":"d/M/yyyy","ug-CN":"yyyy-M-d","sr-Cyrl-BA":"d.M.yyyy","es-US":"M/d/yyyy"};
var l=navigator.language?navigator.language:navigator['userLanguage'],y=d.getFullYear(),m=d.getMonth()+1,d=d.getDate();
f=(l in f)?f[l]:"MM/dd/yyyy";
function z(s){s=''+s;return s.length>1?s:'0'+s;}
f=f.replace(/yyyy/,y);f=f.replace(/yy/,String(y).substr(2));
f=f.replace(/MM/,z(m));f=f.replace(/M/,m);
f=f.replace(/dd/,z(d));f=f.replace(/d/,d);
return f;
}
en utilisant:
shortedDate=getLocaleShortDateString(new Date(1992, 0, 7));
Ne peut pas être fait.
Le code JavaScript inter-navigateur ne permet pas d'utiliser le format de date courte sélectionné par l'utilisateur sur des plates-formes offrant une telle personnalisation régionale. En outre, JavaScript présente d’énormes lacunes en matière de mise en forme. Regardez combien le zéro-padding est compliqué!
Vous pouvez aller très loin pour obtenir le paramètre de langue et obtenir le format typique pour ces paramètres régionaux. Cela fait beaucoup de travail lorsque vous ne savez même pas si les paramètres régionaux sont corrects (je parie que les en-têtes de langue internationale sont souvent incorrects ou pas assez spécifiques), ou si l'utilisateur a personnalisé le format.
Vous pouvez essayer d'utiliser le client VBScript (qui a des fonctions pour toutes ces permutations de formatage régionales), mais ce n'est pas une bonne idée car c'est une technologie spécifique à IE en voie de disparition (mort?).
Vous pouvez également essayer d'utiliser Java/Flash/Silverlight pour creuser le format. C'est aussi beaucoup de travail supplémentaire, mais peut avoir les meilleures chances de succès. Vous souhaitez le mettre en cache pour la session afin de réduire les frais généraux.
Espérons que l'élément HTML5 <heure> apportera un certain soulagement pour l'affichage de la date et de l'heure par i18n.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
L'objet Intl.DateTimeFormat est un constructeur pour les objets qui activer le formatage de la date et de l’heure en fonction de la langue.
var date = new Date(2014, 11, 31, 12, 30, 0);
var formatter = new Intl.DateTimeFormat("ru");
console.log( formatter.format(date) ); // 31.12.2014
var formatter = new Intl.DateTimeFormat("en-US");
console.log(formatter.format(date)); // 12/31/2014
format de votre zone actuelle:
console.log(new Intl.DateTimeFormat(Intl.DateTimeFormat().resolvedOptions().locale).
format(new Date()))
Je ne sais pas comment faire cela (vous pouvez obtenir la langue et essayer d'en déduire les paramètres régionaux).
J'ai essayé de cuisiner un petit quelque chose pour essayer de faire cela (seulement testé sur Firefox avec une seule locale). devrait fonctionner tant que la chaîne de date courte inclut la date sous forme de chiffres, elle pourrait donc échouer pour, par exemple, l'arabe. Il pourrait aussi avoir d’autres bugs, je ne connais pas toutes les particularités locales, c’est juste un concept ...
function getShortDateFormat() {
var d = new Date(1992, 0, 7);
var s = d.toLocaleDateString();
function formatReplacer(str) {
var num = parseInt(str);
switch (num % 100) {
case 92:
return str.replace(/.{1}/g, "Y");
case 1:
return str.length == 1 ? "mM" : "MM"
case 7:
return str.length == 1 ? "dD" : "DD"
}
}
shortDateFormat = s.replace(/\d+/g, formatReplacer);
return shortDateFormat;
}
getShortDateFormat();
Le format de sortie sera:
Donc, dans mon navigateur, le shortDateformat que vous obtenez est "MM/JJ/AAAA".
Si votre question concerne le champ <input type="date">
, voici le script permettant d'obtenir l'attribut filed value=""
:
(new Date()).toISOString().split('T')[0]
Vous pouvez utiliser l'objet Intl ( ecma-402 ) pour obtenir data-date-pattern=""
:
(new Intl.DateTimeFormat()).resolved.pattern // "M/d/y" for "en-US" in Google Chrome
Et enfin, pour formater la date dans la l10n actuelle, data-date=""
:
(new Intl.DateTimeFormat()).format(new Date());
Polyfill: https://github.com/andyearnshaw/Intl.js/issues/129
Cela dépend de l'implémentation toLocaleDateString () du navigateur . Par exemple, en chrome, vous obtiendrez quelque chose comme: "mardi, janvier DD, AAAA"
Vous avez trouvé ce fil en cherchant un moyen de générer des dates localisées mais courtes dans tous les navigateurs sans aucune bibliothèque supplémentaire, simplement un simple appel pour formater les dates ISO générées par le serveur.
Je suis allé avec une combinaison de holden321 et les réponses de mwrf. Stocker les formats externes à la fonction car elle est plus pratique à cet effet et stocker le format de paramètres régionaux actuel car il est toujours utile.
On peut transmettre à la fonction tout ce qui peut être transmis à un constructeur de date pour obtenir une date valide, ainsi qu’à un langage ou à un format offrant plus de souplesse.
Vous devez d'abord configurer la liste des formats et quelques autres éléments:
var LOCALE_DATE_FORMATS = {
// as per mwrf's list
...
}
var LANG = window.navigator.userLanguage || window.navigator.language;
var LOCALE_DATE_FORMAT = LOCALE_DATE_FORMATS[LANG] || 'dd/MM/yyyy';
Alors la fonction est:
function getLocalizedDate(o, options)
{
var res = '';
var date = new Date(o);
if(o != null && !isNaN(date) && typeof(date.getFullYear) == 'function')
{
var d = date.getDate();
var dd = d < 10 ? '0' + d : d;
var M = date.getMonth() + 1;
var MM = M < 10 ? '0' + M : M;
var yyyy = date.getFullYear();
var yy = new String(yyyy).substring(2);
var format = LOCALE_DATE_FORMAT;
if(options && options.lang)
format = LOCALE_DATE_FORMATS[options.lang];
else if(options && options.format)
format = options.format;
res = format
.replace(/dd/g, dd)
.replace(/d/g, d)
.replace(/MM/g, MM)
.replace(/M/g, M)
.replace(/yyyy/g, yyyy)
.replace(/yy/g, yy);
}
return res;
}
getLocalizedDate('2013-03-01T00:00:00', {lang:'sk-SK'})
= 1. 3. 2013
EDIT: Appel sans arguments pour utiliser les paramètres régionaux de l'utilisateur, bien sûr:
getLocalizedDate('2013-03-01T00:00:00')
= 01/03/2013
(pour moi)
Si vous êtes un fan d’extensions de prototypes, les premières lignes de la définition de fonction deviennent:
Date.prototype.getLocalized = function(options)
{
var date = this;
Appelé bien sûr comme ça:
new Date('2013-03-01T00:00:00').getLocalized({lang:'sk-SK'})
= 1. 3. 2013
EDIT: Encore une fois, appelez sans argument pour utiliser les paramètres régionaux de l'utilisateur:
new Date('2013-03-01T00:00:00').getLocalized()
= 01/03/2013
(pour moi)
Il n'y a pas de moyen facile. Si vous souhaitez une solution fiable couvrant plusieurs navigateurs, vous devez créer un tableau de recherche contenant des chaînes de format de date et d'heure, par culture. Pour formater une date, analysez la chaîne de format correspondante, extrayez les parties pertinentes de la date, c'est-à-dire le jour, le mois, l'année et ajoutez-les ensemble.
C’est essentiellement ce que Microsoft fait avec sa bibliothèque AJAX, comme indiqué dans la réponse de @ no.
Légère modification de la réponse de Mitali. Générer dynamiquement le langage pour une solution plus localisée.
var lang= window.navigator.userLanguage || window.navigator.language;
var date = new Date();
var options = {
weekday: "short",
year: "numeric",
month: "2-digit",
day: "numeric"
};
date.toLocaleDateString(lang, options);
Je crois que vous pouvez utiliser celui-ci: New Date (). ToLocaleDateString ();
Qui peut accepter des paramètres pour les paramètres régionaux: New Date (). ToLocaleDateString ("en-us"); New Date (). ToLocaleDateString ("il-il");
Je vois que cela est supporté par chrome, IE, Edge, même si les résultats peuvent varier, il fait un très bon travail pour moi.
si vous essayez de savoir si le navigateur utilise "DD/MM/YYYY"
ou "MM/DD/YYYY"
, vous pouvez utiliser le code ci-dessous.
var format = "DD/MM/YYYY";
if(new Date("21/5/2019")=="Invalid Date"){
format = "MM/DD/YYYY";
}
console.log(format);
Essayez d'utiliser Date.CultureInfo.formatPatterns.shortDate