Code : Tout sélectionner
; *------------------------------------------*
; | (c) Boddhi - 2010 |
; *------------------------------------------*
; | OS : Windows |
; | Fonctions relatives aux dates locales |
; *------------------------------------------*
EnableExplicit
; *******************
; **** FONCTIONS ****
; *******************
Procedure.l Date_Now() ; Retourne la date et l'heure système au format PureBasic
Define.SYSTEMTIME DateSysteme
Define.l ValeurRetour
GetLocalTime_(DateSysteme)
With DateSysteme
ValeurRetour=Date(\wYear,\wMonth,\wDay,\wHour,\wMinute,\wSecond)
EndWith
ProcedureReturn ValeurRetour
EndProcedure
Procedure.s Date_Format(DatePB.l,Masque.s="") ; Retourne une date PureBasic en une chaine au format 'Masque' ou Local si Masque=""
; d - Jour du mois sans 0 d'alignement
; dd - Jour du mois avec un 0 d'alignement
; ddd - Nom du jour de la semaine abrégé sur 3 caractères
; dddd - Nom du jour de la semaine entier
; M - Mois sans 0 d'alignement
; MM - Mois avec un 0 d'alignement
; MMM - Nom du mois abrégé
; MMMM - Nom du mois entier
; y - Année sur 2 chiffres sans 0 d'alignement pour les années < 10
; yy - Année sur 2 chiffres
; yyyy - Année sur 4 chiffres
; h - Heure sans 0 d'alignement sur 12h
; hh - Heure avec 0 d'alignement sur 12h
; H - Heure sans 0 d'alignement sur 24h
; HH - Heure avec 0 d'alignement sur 24h
; m - Minutes sans 0 d'alignement
; mm - Minutes avec 0 d'alignement
; s - Secondes sans 0 d'alignement
; ss - Secondes avec 0 d'alignement
; dw - Jour de la semaine (Lundi=1 -> Dimanche=7)
Define.SYSTEMTIME DateSysteme
Define.s Chaine,FORMATDATE_USERLOCALE,FORMATHEURE_USERLOCALE,AMPM
Define.l Valeur
If Masque=""
FORMATDATE_USERLOCALE=Space(255)
FORMATHEURE_USERLOCALE=Space(255)
GetLocaleInfo_(#LOCALE_USER_DEFAULT,#LOCALE_SLONGDATE,@FORMATDATE_USERLOCALE,255)
GetLocaleInfo_(#LOCALE_USER_DEFAULT,#LOCALE_STIMEFORMAT,@FORMATHEURE_USERLOCALE,255)
Masque=FORMATDATE_USERLOCALE+" "+FORMATHEURE_USERLOCALE
EndIf
Masque=ReplaceString(Masque,"dw","%05")
Masque=ReplaceString(Masque,"dddd","%01")
Masque=ReplaceString(Masque,"ddd","%02")
Masque=ReplaceString(Masque,"dd","%03")
Masque=ReplaceString(Masque,"d","%04")
Masque=ReplaceString(Masque,"MMMM","%10")
Masque=ReplaceString(Masque,"MMM","%11")
Masque=ReplaceString(Masque,"MM","%12")
Masque=ReplaceString(Masque,"M","%13")
Masque=ReplaceString(Masque,"yyyy","%20")
Masque=ReplaceString(Masque,"yy","%21")
Masque=ReplaceString(Masque,"y","%22")
Masque=ReplaceString(Masque,"hh","%30")
Masque=ReplaceString(Masque,"h","%31")
Masque=ReplaceString(Masque,"HH","%32")
Masque=ReplaceString(Masque,"H","%33")
Masque=ReplaceString(Masque,"mm","%34")
Masque=ReplaceString(Masque,"m","%35")
Masque=ReplaceString(Masque,"ss","%36")
Masque=ReplaceString(Masque,"s","%37")
Masque=ReplaceString(Masque,"tt","%40")
Masque=ReplaceString(Masque,"t","%41")
With DateSysteme
\wYear=Year(DatePB)
\wMonth=Month(DatePB)
\wDayOfWeek=DayOfWeek(DatePB)
\wDay=Day(DatePB)
\wHour=Hour(DatePB)
\wMinute=Minute(DatePB)
\wSecond=Second(DatePB)
If FindString(Masque,"%01",1)>0
Chaine=Space(255)
GetDateFormat_(#LOCALE_USER_DEFAULT,0,DateSysteme,"dddd",Chaine,255)
Masque=ReplaceString(Masque,"%01",Chaine)
EndIf
If FindString(Masque,"%02",1)>0
Chaine=Space(255)
GetDateFormat_(#LOCALE_USER_DEFAULT,0,DateSysteme,"ddd",Chaine,255)
Masque=ReplaceString(Masque,"%02",Chaine)
EndIf
Masque=ReplaceString(Masque,"%03",RSet(Str(\wDay),2,"0"))
Masque=ReplaceString(Masque,"%04",Str(\wDay))
Masque=ReplaceString(Masque,"%05",Str(\wDayOfWeek))
If FindString(Masque,"%10",1)
Chaine=Space(255)
GetDateFormat_(#LOCALE_USER_DEFAULT,0,DateSysteme,"MMMM",Chaine,255)
Masque=ReplaceString(Masque,"%10",Chaine)
EndIf
If FindString(Masque,"%11",1)>0
Chaine=Space(255)
GetDateFormat_(#LOCALE_USER_DEFAULT,0,DateSysteme,"MMM",Chaine,255)
Masque=ReplaceString(Masque,"%11",Chaine)
EndIf
Masque=ReplaceString(Masque,"%12",RSet(Str(\wMonth),2,"0"))
Masque=ReplaceString(Masque,"%13",Str(\wMonth))
Masque=ReplaceString(Masque,"%20",RSet(Str(\wYear),4,"0"))
Masque=ReplaceString(Masque,"%21",RSet(Right(Str(\wYear),2),2,"0"))
Masque=ReplaceString(Masque,"%22",Str(Val(Right(Str(\wYear),2))))
If FindString(Masque,"%30",1)>0 Or FindString(Masque,"%31",1)>0
If \wHour>=12:Valeur=\wHour-12:Else:Valeur=\wHour:EndIf
Masque=ReplaceString(Masque,"%30",RSet(Str(Valeur),2,"0"))
Masque=ReplaceString(Masque,"%31",Str(Valeur))
EndIf
Masque=ReplaceString(Masque,"%32",RSet(Str(\wHour),2,"0"))
Masque=ReplaceString(Masque,"%33",Str(\wHour))
Masque=ReplaceString(Masque,"%34",RSet(Str(\wMinute),2,"0"))
Masque=ReplaceString(Masque,"%35",Str(\wMinute))
Masque=ReplaceString(Masque,"%36",RSet(Str(\wSecond),2,"0"))
Masque=ReplaceString(Masque,"%37",Str(\wSecond))
If \wHour<12:AMPM="AM":Else:AMPM="PM":EndIf
If FindString(Masque,"%40",1)>0
Masque=ReplaceString(Masque,"%40",AMPM)
EndIf
If FindString(Masque,"%41",1)>0
Masque=ReplaceString(Masque,"%41",Left(AMPM,1))
EndIf
EndWith
ProcedureReturn Masque
EndProcedure
Procedure.s Date_LocalDay(Jour.b,Mode.b=0) ; Retourne le nom (mode 0:complet 1:abrégé) du Jour
Define.s Chaine,Chaine2
Define.l DatePB
Define.SYSTEMTIME DateSysteme
If Jour>=1 And Jour<=7
DatePB=Date(1973,1,Jour,0,0,0)
With DateSysteme
\wYear=Year(DatePB)
\wMonth=Month(DatePB)
\wDay=Day(DatePB)
EndWith
Chaine=Space(255)
If Mode=0:Chaine2="ddd":Else:Chaine2="dddd":EndIf
GetDateFormat_(#LOCALE_USER_DEFAULT,0,DateSysteme,Chaine2,Chaine,255)
EndIf
ProcedureReturn Chaine
EndProcedure
Procedure.s Date_LocalMonth(Mois.b,Mode.b=0) ; Retourne le nom (mode 0:complet 1:abrégé) du Mois
Define.s Chaine,Chaine2
Define.l DatePB
Define.SYSTEMTIME DateSysteme
If Mois>=1 And Mois<=12
DatePB=Date(1970,Mois,1,0,0,0)
With DateSysteme
\wYear=Year(DatePB)
\wMonth=Month(DatePB)
\wDay=Day(DatePB)
EndWith
Chaine=Space(255)
If Mode=0:Chaine2="MMM":Else:Chaine2="MMMM":EndIf
GetDateFormat_(#LOCALE_USER_DEFAULT,0,DateSysteme,Chaine2,Chaine,255)
EndIf
ProcedureReturn Chaine
EndProcedure
; Retourne la date du jour au format système local
Debug Date_Format(Date_Now())
; Retourne la date du jour selon un masque
Debug Date_Format(Date_Now(),"dddd dd MMMM yyyy")
; Retourne la date du jour et l'heure actuelle selon un masque
Debug Date_Format(Date_Now(),"dd/MM/yy hh:mm:ss")
; Retourne le nom du jour et du mois d'aujourd'hui
Debug "Nous sommes un "+Date_LocalDay(Val(Date_Format(Date_Now(),"dw")))+" du mois de "+Date_LocalMonth(Val(Date_Format(Date_Now(),"M")))
; Retourne le n° du jour de la semaine
Debug "Nous sommes le "+Date_Format(Date_Now(),"dw")+"e jour de la semaine"