[LUA] Date & Time

OS.TIME

Lorsque la fonction os.time() est appellée sans argument elle retourne la date et l'heure actuelle codé dans un nombre (en secondes). Appelée avec une table, elle renvoie la date et l'heure décrites par la table dans un nombre(ce nombre est en seconde et est calculé apartir de la date du 01/01/1970 à 01:00:00). De telles tables de date ont les champs significatifs suivants :


year -> une année (par exemple 2007)
month -> 01-12
day -> 01-31
hour -> 00-23
min -> 00-59
sec -> 00-59

Les trois premiers paramètres sont obligatoire et donc les autres facultatifs (12:00:00 quand ils sont pas définis).Voyons quelques exemples:


print(os.time{year=2007, month=2, day=25, hour=22, minute=40})
--> 1172437200 (ce chiffre est en seconde, il s'est donc écouler 
					1 172 437 200 secondes depuis le 01/01/1970)
					
print(os.time{year=1970, month=1, day=1, hour=1})
--> 0

print(os.time{year=1970, month=1, day=1})
--> 39600 (remarque: 39 600 = 11 * 60 *60, donc 11 heures, 
					nous n'avons pas définis hour, min 
					et sec il ont donc eu pour valeur 12:00:00)


OS.DATE

os.date(), comme son nom l'indique est la fonction inverse de os.time(): Elle convertit un nombre représentant une date et une heure. Son premier paramètre est une string de format, décrivant la représentation que nous voulons. La seconde est la valeur numerique de la date et du temps par rapport à celle de référence (01/01/1970 01:00:00). Pour obtenir une table de date on utilise comme 1er paramètre '*t' puis la valeur numerique de la date. Par exemple:


temp = os.date("*t", 906000490)

produit la table:


{year = 1998, month = 9, day = 17, yday = 260, wday = 4,
		hour = 04, min = 48, sec = 10, isdst = false} 

(plus haut je n'ai pas parlé de 'isdst' car je ne sais pas ce que c'est)


(yday est le jour de l'année 1-365, 1 étant le 1er janvier; wday est le jour de la semaine, 1 etant dimanche)


Pour d'autre format de string, os.date formate la date comme ce paramètre. Tous les format de string sont des tag spécifique précéder de '%' comme dans l'exemple suivant:


print(os.date("Aujourd'hui, nous sommes un %A de %B"))
--> Aujourd'hui, nous sommes un Sunday de february (malheuresement, 
				comme on peut le constater les dates sont en anglais)
				
print(os.date("%x", 906000490))
--> 09/16/1998 (c'est la synthaxe 'anglaise' sous la forme mois/jour/année
				pour l'avoir en jour/mois/année if faut utiliser: 
				os.date("%m/%d/%Y",906000490) )
				
print(os.date('%c'))
--> 02/25/2007 23:30:14 (comme on peut le constater si on n'indique pas 
				le deusieme parametre la fonction os.date nous donne la 
				date et l'heure actuelle)

Bien qu'elles soient en anglais il est assez facile de creéer une fonction qui les convertirai en français.


Enfin voici une grande partie des tags que peut prendre os.date:


      %c Date/heure

      %x seulement la date

      %X seulement l'heure

      %y l'année (composé des 2 dernier chiffre par exemple pour 2007 -> 07)

      %Y l'année (nnnn).

      %j jour de l'année (001..366).

      %m mois (01..12).

      %b Nom du mois abréger (le mois est en anglais)

      %B Nom du mois compler (idem en anglais)

      %d jour du mois (01..31).

      %U numéros de semaine (01..53), (dimanche étant le premier jour de la semaine)

      %W numéros de semaine (01..53) (lundi étant le premier jour de la semaine)

      %w jour de la semaine (0..6), 0 correspond à  dimanche.

      %a nom du jour de la semaine abréger (en anglais)

      %A nom du jour de la semaine compler (en anglais)

      %H heure (00..23)

      %I heure (01..12)

      %p AM ou PM.

      %M Minute (00..59)

      %S Seconde (00..61)