1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| <script type="text/javascript">
// ajoute les zéros non-significatif, si besoin
function addZero(nbre){
if(nbre<10 && nbre.length<2)
nbre="0"+nbre;
return nbre;
}
// calcul le nombre de jours par mois
function jours(mois, annee){
var jMax=31; // 31 par défaut
switch(mois){
case "4": case "6": case "9": case "04": case "06": case "09": case "11": // mois à 30 jours
jMax=30;
break;
case "2": case "02": // février
if(annee%4==0 && annee%100!=0 || annee%400==0) // année bisextile ?
jMax=29;
else
jMax=28;
}
return jMax;
}
// test la date
function dateValidation(dateTime) {
// test le format
if(!dateTime.match(/\d{1,2}\/\d{1,2}\/\d{4}-\d{1,2}:\d{1,2}:\d{1,2}/))
return false;
// récupère le jour, mois, année, heure, minute et seconde
var date=dateTime.split("-")[0];
var time=dateTime.split("-")[1];
var date=date.split("/");
var time=time.split(":");
// vérifie que les nombres ne soient pas trop grands
if(date[0]>jours(date[1], date[2]) || date[1]>12 || time[0]>23 || time[1]>59 || time[2]>59)
return false;
// ajoute les zéros non-significatifs
date[0]=addZero(date[0]);
date[1]=addZero(date[1]);
time[0]=addZero(time[0]);
time[1]=addZero(time[1]);
time[2]=addZero(time[2]);
// retourne la date complète
return date.join("/")+"-"+time.join(":");
}
</script>
<input id="date" value="12/11/2012-15:45:58" />
<input type="button" value="calc" onclick="
var input=document.getElementById('date');
var result=dateValidation(input.value);
result
?
input.value=result
:
alert ('Attention, il y a un problème.\nPeut-être que le format n\'est pas respecté (jj/mm/aaaa-hh:mm:ss)\nOu qu\'un nombre est trop élevé (il y a au maximum 28 à 31 jours (selon le mois), 12 mois, 23 heures, 59 minutes et 59 secondes)\nIl est possible d\'omettre un chiffre pour tout (les zéros seront alors ajoutés avant le nombre), sauf pour la date. Car il est impossible de savoir s\'il s\'agit de 1910 ou de 2010. Pour les dates inférieures à l\'an mille, complétez avec des zéros (0256 pour l\'an 256)')" /> |
Partager