Accueil Compétences Patterns Page Web ASP Formater une chaine avec des zéros à gauche

Formater une chaine avec des zéros à gauche

Clique:
4622

Réponse

L'une des grosses lacune du vbscript et de l'asp est l'absence de la fonction Format que l'on retrouve pourtant en VBA et en VB

A la place on a seulement formatdatetime, formatnumber, formatcurrency qui sont très limité en particulier pour ce qui est du formatage

Par exemple il est souvent utile de manipuler une date au format AAAAMMJJ or la conversion d'une date dans ce format n'est pas simple

La fonction month() et la fonction day() retourne des valeurs numérique qu'il faut compléter avec un 0 à gauche pour les valeurs inférieurs à 10

Admettons que l'on souhaite écrire la date du jour au format AAAAMMJJ généralement on va écrire un code de ce type

1
2
3
4
5
6
7
8
9
10
11
datejour = now
szdateAAAAMMJJ = year(datejour)
if month(datejour) < 10 then
    szdateAAAAMMJJ =szdateAAAAMMJJ  & "0"
end if
szdateAAAAMMJJ =szdateAAAAMMJJ  & month (datejour)
if day(datejour) < 10 then
    szdateAAAAMMJJ =szdateAAAAMMJJ  & "0"
end if
szdateAAAAMMJJ =szdateAAAAMMJJ  & day (datejour)

Pas très élégant vous en conviendrez

une solution plus compacte et performante est de coder la chose de cette manière

1
2
3
4
datejour = now
szdateAAAAMMJJ = szdateAAAAMMJJ & year (datejour) 
szdateAAAAMMJJ = szdateAAAAMMJJ & right ("00" & month(datejour), 2)  
szdateAAAAMMJJ = szdateAAAAMMJJ & right ("00" & day(datejour), 2)

Vous pouvez aussi utiliser une variante avec string("0",2) qui retourner la valeur "00", mais on perd un peu en performance...