Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/05/2007, 23h14   #1
Membre à l'essai
 
Inscription : mai 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 65
Points : 20
Points : 20
Par défaut Simuler fonction Format en ASP/VBScript

Bonjour,

je voudrais savoir si quelqu'un connais un endroit où je pourrais trouver une fonction toute faite (basée sur la propriété LCID d'asp) permettant de reproduire le fonctionnement de la fonction "Format" de VB qui n'est pas disponible en vbscript.

Merci !
Loki13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 14h27   #2
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Bonjour,

pourquoi ne pas utiliser FormatCurrency, FormatDateTime, FormatNumber ou FormatPercent en fonction de ce que tu veux faire ?
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 15h01   #3
Membre à l'essai
 
Inscription : mai 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 65
Points : 20
Points : 20
Parce que ces fonctions sont trop dépendantes de ce que l'usager va entrer comme formats dans ses paramètres régionaux.

Par exemple pour les dates, si je veux afficher une date au format "Mardi, le 8 mai 2007" et que j'utilise FormatDateTime(Now, vbLongDate), le jour de la semaine peut ne pas apparaître (c'est même le cas par défaut je crois) si l'usager n'a pas configuré sa date longue comme suit: "dddd d mmmm yyyy"

En utilisant la fonction Format je n'ai pas ce problème puisque je force le format de la date, le LCID me permet toutefois de récupérer le bon nom de jour de la semaine et le nom du mois en la langue des paramètres régionaux.
Loki13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 19h39   #4
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Je sais que ce n'est pas exactement ce que tu demandais, mais que dirais-tu d'une solution de ce type :

Code :
1
2
3
Dim dteDate
dteDate = Date
Response.Write WeekdayName(Weekday(dteDate), , vbSunday) & " " & Day(dteDate) & " " & MonthName(Month(dteDate)) & " " & Year(dteDate)
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 20h45   #5
Membre à l'essai
 
Inscription : mai 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 65
Points : 20
Points : 20
En y repensant, vu que j'avais besoin de ça surtout pour la date, j'ai pu faire la fonction moi-même relativement facilement.

J'aimerais, si vous dit, que vous y jetiez un oeil et me dire s'il y a quelquechose qui cloche ou si ça vous semble correct. Les tests que j'ai fait jusqu'à maintenant sont concluants.

Merci !

Code :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
Public Function Format(ByVal datFormat, ByVal strFormat)
	'Fonction simulant le Format de VB pour les dates
 
	Dim intAnnee
	Dim intMois
	Dim intJour
	Dim intHeure
	Dim intMinute
	Dim intSeconde
	Dim strFormatTemp
 
	'YYYY Années
	'MM Mois
	'DD Jours
	'HH Heures (format 24h)
	'hh Heures (format 12h)
	'NN Minutes
	'SS Secondes
 
	intAnnee = Year(datFormat)
	intMois = Month(datFormat)
	intJour = Day(datFormat)
	intHeure = Hour(datFormat)
	intMinute = Minute(datFormat)
	intSeconde = Second(datFormat)
 
	Format = vbNullString
	intI = 1
	Do While intI <= Len(strFormat)
		strFormatTemp = vbNullString
		Do
			strFormatTemp = strFormatTemp & Mid(strFormat, intI, 1)
			intI = intI + 1
		Loop Until Mid(strFormat, intI, 1) <> Mid(strFormat, intI - 1, 1)
 
		Select Case strFormatTemp
			Case "YYYY", "yyyy"
				Format = Format & intAnnee
			Case "YY", "yy"
				Format = Format & Right("00" & intAnnee, 2)
			Case "MMMM", "mmmm"
				Format = Format & MonthName(intMois, False)
			Case "MMM", "mmm"
				Format = Format & MonthName(intMois, True)
			Case "MM", "mm"
				Format = Format & Right("00" & intMois, 2)
			Case "M", "m"			
				Format = Format & intMois
			Case "DDDD", "dddd"
				Format = Format & WeekDayName(WeekDay(datFormat), False)
			Case "DDD", "ddd"
				Format = Format & WeekDayName(WeekDay(datFormat), True)
			Case "DD", "dd"
				Format = Format & Right("00" & intJour, 2)
			Case "D", "d"			
				Format = Format & intJour
			Case "HH"
				Format = Format & Right("00" & intHeure, 2)
			Case "H"
				Format = Format & intHeure
			Case "hh"
				If intHeure > 12 Then
					Format = Format & Right("00" & (intHeure - 12), 2)
				Else
					Format = Format & Right("00" & (intHeure), 2)
				End If
			Case "h"	
				If intHeure > 12 Then
					Format = Format & (intHeure - 12)
				Else
					Format = Format & intHeure
				End If
			Case "NN", "nn"
				Format = Format & Right("00" & intMinute, 2)
			Case "N", "n"
				Format = Format & intMinute
			Case "SS", "ss"
				Format = Format & Right("00" & intSeconde, 2)
			Case "S", "s"
				Format = Format & intSeconde
			Case Else
				Format = Format & strFormatTemp
		End Select
	Loop
End Function
Loki13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2007, 23h35   #6
J1
Membre actif
 
Inscription : mai 2004
Messages : 225
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 225
Points : 195
Points : 195
Personnellement, je ne vais pas avoir le temps de relire tout ton code en détails. Difficile donc de te donner un avis constructif.
Une toute petite chose néanmoins que j'ai remarquée en testant rapidement : intI ne semble pas être déclarée. Tu peux utiliser Option Explicit pour éviter ce genre d'oubli.
J1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h53.


 
 
 
 
Partenaires

Hébergement Web