Script perl qui convertit les fuseaux horaires - Perl - Programmation
Marsh Posté le 13-03-2004 à 20:05:03
Si tes entrée sont vraiment un string de type "XX:YY" et un fuseau horaire en string sur trois lettres alors je ne pense pas qu'un module existant poirra t'aider (mais je me trompe peutetre). Par contre c'est assez simple à faire.
Je ne sais pas exactement ce que tu veux recuperer en sortie, mais pour tes fuseaux déjà au lieu de faire un switch (ou plutot un if elsif... pasque switch n'existe pas en natif), tu peux utiliser une table de hash:
Code :
|
ensuite il te suffit de recuperer la valeur de ton fuseau à partir de son nom en passant celui ci comme clé de ta table de hash:
Code :
|
le probleme c'est que le NST est un decalage de 3h30 donc tu ne peux pas simplement decaler les heures, donc faux convertir tout ca en minutes, faire la tembouille, et resortir tout ca (dans quel format? un print à l'ecran?)
apres faudrait rajouter qq trucs pour check les arguments au début
En gros tu peux faire comme ca:
Code :
|
Marsh Posté le 13-03-2004 à 20:39:12
J'aurai pensé que c'était uniquement quelques lignes (genre 5-6 lignes...)
Un gros merci, je vais étudier ca attentivement.
Beaucoup de nouveau code, ca ressemble à un mélange de C et de Shell...
Encore merci!
Marsh Posté le 13-03-2004 à 21:24:08
ben c'est clair qu'on peut le faire plus court (et toujours clair pour un programmeur Perl), mais vu que tu es debutant en Perl je t'ais fait un truc avec une syntaxe genre C
Sinon si tu veux je t'en fais une regexp d'une ligne
Marsh Posté le 13-03-2004 à 21:33:08
expression reguliere
ca n'est pas un langage mais un outil specifique à Perl, qui a depuis été rependu dans beaucoup d'autres langages, et qui défini une mini syntaxe permettant de traiter une chaine de caractere de maniere tres concise
Marsh Posté le 13-03-2004 à 22:07:36
bordel...
ca me donne pas les bons résultats puisque je suis au Québec...
12:58 devrais me donner 9:58 PST
Marsh Posté le 13-03-2004 à 23:17:34
ben tu modifie le decalage de fuseau selon tes besoins
my %decalage_fuseau = (
PST => -8,
MST => -7,
CST => -6,
EST => -5,
AST => -4,
NST => -3.5,
);
Marsh Posté le 14-03-2004 à 00:45:14
Ouai, c'est ce que j'ai fait... par contre, pour avoir le bon résultat par exemple, j'ai mis NST -1.5, mais dans la réalité, il est 1h30 plus tard que chez moi...
enfin, ca doit être un détail...
Marsh Posté le 14-03-2004 à 16:39:07
je comprend pas trop ton histoire?
1.5h ca fait bien 1h30...
Marsh Posté le 14-03-2004 à 17:01:10
oui! mais de mon fuseau à moi, il est +1.5 en NST et dans le script, j'ai mis -1.5 pour que ca fonctionne...
Marsh Posté le 14-03-2004 à 18:39:37
c'est normal, c'est le decalage par rapport à UTC (ou a ton crenaux), donc tu de deduit à l'heure donnée: ca se lit à l'envers
mais si tu prefere tu peux passer tout en positif et mettre "$min += 60*$decalage_fuseau{$fuseau};" au lieu de "$min -= 60*$decalage_fuseau{$fuseau};"
Marsh Posté le 13-03-2004 à 18:19:37
Salut,
Je dois écrire un petit script en PERL mais je ne connais vraiment pas ce langage...
Le script doit transformer l?heure donnée vers une heure d?un autre fuseau horaire. Le premier paramètre est l?heure à transformer (format XX :YY où XX est entre 1 et 12, et YY est entre 0 et 59). Et le deuxième paramètre est le fuseau horaire demandé (PST, MST, CST, AST, NST).
Ca serait quoi la meilleure façon de faire ca? Il y a des variables prédéfinies? J'affecte une valeurs à tous les fuseaux horaires? Je fais un if à chaque fuseaux?
qq choses comme ca?