Comment puis-je le rendre plus agréable?
var month = new Array();
month['01']='Jan';
month['02']='Feb';
month['03']='Mar';
etc. Il serait bon de le faire comme ceci:
var months = new Array(['01','Jan'],['02','Feb'],['03','Mar']);
Par exemple. de toute façon comme ça pour le simplifier?
cela devrait le faire ..
var months = {'01':'Jan', '02':'Feb'};
alert( months['01'] );
Pour une approche plus naturelle, essayez ce petit extrait. Cela fonctionne avec les objets Date
et comme une fonction normale:
'use strict';
(function(d){
var mL = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var mS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
d.prototype.getLongMonth = d.getLongMonth = function getLongMonth (inMonth) {
return gM.call(this, inMonth, mL);
}
d.prototype.getShortMonth = d.getShortMonth = function getShortMonth (inMonth) {
return gM.call(this, inMonth, mS);
}
function gM(inMonth, arr){
var m;
if(this instanceof d){
m = this.getMonth();
}
else if(typeof inMonth !== 'undefined') {
m = parseInt(inMonth,10) - 1; // Subtract 1 to start January at zero
}
return arr[m];
}
})(Date);
Vous pouvez directement copier et coller ceci, puis l'utiliser comme ceci:
var today = new Date();
console.log(today.getLongMonth());
console.log(Date.getLongMonth(9)); // September
console.log(today.getShortMonth());
console.log(Date.getShortMonth('09')); // Sept
Cette technique offrira une flexibilité quant à la façon dont vous indexez et comment vous y accédez. Lorsque vous utilisez l'objet Date
, il fonctionnera correctement, mais s'il l'utilise en tant que fonction autonome, il considère les mois dans un format lisible par l'homme de 1 à 12.
pourquoi pas:
var month = [
'Jan',
'Feb',
// ...
'Dec'];
Pour obtenir le nom du mois à partir du numéro, vous feriez quelque chose comme:
var monthNum = 2; // February
var monthShortName = month[monthNum-1];
Voici une solution dynamique qui ne nécessite pas de coder en dur un tableau de mois:
const month = f=>Array.from(Array(12),(e,i)=>new Date(25e8*++i).toLocaleString('en-US',{month:f}));
Cas de test:
// Using Number Index:
month`long`[0]; // January
month`long`[1]; // February
month`long`[2]; // March
month`short`[0]; // Jan
month`short`[1]; // Feb
month`short`[2]; // Mar
month`narrow`[0]; // J
month`narrow`[1]; // F
month`narrow`[2]; // M
month`numeric`[0]; // 1
month`numeric`[1]; // 2
month`numeric`[2]; // 3
month`2-digit`[0]; // 01
month`2-digit`[1]; // 02
month`2-digit`[2]; // 03
// Using String Index:
let index_string = '01';
month`long`[index_string-1]; // January
month`short`[index_string-1]; // Jan
month`narrow`[index_string-1]; // J
month`numeric`[index_string-1]; // 1
month`2-digit`[index_string-1]; // 01
N'utilisez pas un tableau sauf si vous utilisez des index numériques réels. Essaye ça:
var month = {
'01': 'Jan',
'02': 'Feb',
// ...
'12': 'Dec'
};
Personnellement, j’envelopperais ce genre de logique dans une fonction:
var monthNames = ['Jan', 'Feb', /* ... */ 'Dec'];
function getMonthName(n) {
return monthNames(n - 1);
}
alert(getMonthName(1)); // 'Jan'
De cette façon, vous ne devez jamais penser à la structure de données sous-jacente, ni vous soucier de la changer plus tard.
Voici une approche très simple pour obtenir le nom du mois:
<script>
function getMonth(month){
month = month-1;
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
if(months[month] != null){
return months[month];
}else{
throw "Invalid Month No";
}
}
try{
monthName = getMonth(8);
alert("Month Is : " + monthName);
}catch(e){
console.log(e);
}
</script>