Bonjour,
Je recupere un date au format suivant : 2004-04-07 18:12:38 et
j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970).
J'ai vu qu'il existe plein de fonction comme timelocal mais je
n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond
pas).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Paul GABORIT
À (at) 7 Apr 2004 08:49:31 -0700, (nicholls) écrivait (wrote):
Je recupere un date au format suivant : 2004-04-07 18:12:38 et j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970). J'ai vu qu'il existe plein de fonction comme timelocal mais je n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond pas).
Je suppose que c'est une date au format ISO (YYYY-MM-DD HH:mm:ss) et non pas à l'anglaise (avec le mois et le quantième du mois inversé). Je suppose aussi que c'est une heure locale (correspondant à la timezone de la machine qui effectue la conversion). Je suppose en plus que les heures, les minutes et les secondes sont toujours sur deux chiffres.
Dans ce cas, on peut faire :
use Time::Local; # a installer
my $date = "2004-04-07 18:12:38";
if ($date =~ m/^(d{4})-(dd)-(dd) (dd):(dd):(dd)$/) { my ($YY, $MM, $DD, $HH, $mm, $ss) = ($1, $2, $3, $4, $5, $6);
Pour obtenir le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit de manière portable, il faut en plus tester l'origine des temps qui n'est pas la même sur tous les OS (cf. perldoc -f time).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
Je recupere un date au format suivant : 2004-04-07 18:12:38 et
j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970).
J'ai vu qu'il existe plein de fonction comme timelocal mais je
n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond
pas).
Je suppose que c'est une date au format ISO (YYYY-MM-DD HH:mm:ss) et non pas à
l'anglaise (avec le mois et le quantième du mois inversé). Je suppose aussi
que c'est une heure locale (correspondant à la timezone de la machine qui
effectue la conversion). Je suppose en plus que les heures, les minutes et les
secondes sont toujours sur deux chiffres.
Dans ce cas, on peut faire :
use Time::Local; # a installer
my $date = "2004-04-07 18:12:38";
if ($date =~ m/^(d{4})-(dd)-(dd) (dd):(dd):(dd)$/) {
my ($YY, $MM, $DD, $HH, $mm, $ss) = ($1, $2, $3, $4, $5, $6);
Pour obtenir le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit
de manière portable, il faut en plus tester l'origine des temps qui n'est pas
la même sur tous les OS (cf. perldoc -f time).
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) 7 Apr 2004 08:49:31 -0700, (nicholls) écrivait (wrote):
Je recupere un date au format suivant : 2004-04-07 18:12:38 et j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970). J'ai vu qu'il existe plein de fonction comme timelocal mais je n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond pas).
Je suppose que c'est une date au format ISO (YYYY-MM-DD HH:mm:ss) et non pas à l'anglaise (avec le mois et le quantième du mois inversé). Je suppose aussi que c'est une heure locale (correspondant à la timezone de la machine qui effectue la conversion). Je suppose en plus que les heures, les minutes et les secondes sont toujours sur deux chiffres.
Dans ce cas, on peut faire :
use Time::Local; # a installer
my $date = "2004-04-07 18:12:38";
if ($date =~ m/^(d{4})-(dd)-(dd) (dd):(dd):(dd)$/) { my ($YY, $MM, $DD, $HH, $mm, $ss) = ($1, $2, $3, $4, $5, $6);
Pour obtenir le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit de manière portable, il faut en plus tester l'origine des temps qui n'est pas la même sur tous les OS (cf. perldoc -f time).
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
nicholls
bonjour,
Ca marche parfaitement, je crois que ce qui n'alais pas c'est qu'il faut soustraire 1 au mois (pourquoi ?).
Merci.
Paul GABORIT wrote in message news:...
À (at) 7 Apr 2004 08:49:31 -0700, (nicholls) écrivait (wrote):
Je recupere un date au format suivant : 2004-04-07 18:12:38 et j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970). J'ai vu qu'il existe plein de fonction comme timelocal mais je n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond pas).
Je suppose que c'est une date au format ISO (YYYY-MM-DD HH:mm:ss) et non pas à l'anglaise (avec le mois et le quantième du mois inversé). Je suppose aussi que c'est une heure locale (correspondant à la timezone de la machine qui effectue la conversion). Je suppose en plus que les heures, les minutes et les secondes sont toujours sur deux chiffres.
Dans ce cas, on peut faire :
use Time::Local; # a installer
my $date = "2004-04-07 18:12:38";
if ($date =~ m/^(d{4})-(dd)-(dd) (dd):(dd):(dd)$/) { my ($YY, $MM, $DD, $HH, $mm, $ss) = ($1, $2, $3, $4, $5, $6);
Pour obtenir le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit de manière portable, il faut en plus tester l'origine des temps qui n'est pas la même sur tous les OS (cf. perldoc -f time).
bonjour,
Ca marche parfaitement, je crois que ce qui n'alais pas c'est qu'il
faut soustraire 1 au mois (pourquoi ?).
Merci.
Paul GABORIT <Paul.Gaborit@invalid.invalid> wrote in message news:<r74qrvhhfp.fsf@michelange.enstimac.fr>...
Je recupere un date au format suivant : 2004-04-07 18:12:38 et
j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970).
J'ai vu qu'il existe plein de fonction comme timelocal mais je
n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond
pas).
Je suppose que c'est une date au format ISO (YYYY-MM-DD HH:mm:ss) et non pas à
l'anglaise (avec le mois et le quantième du mois inversé). Je suppose aussi
que c'est une heure locale (correspondant à la timezone de la machine qui
effectue la conversion). Je suppose en plus que les heures, les minutes et les
secondes sont toujours sur deux chiffres.
Dans ce cas, on peut faire :
use Time::Local; # a installer
my $date = "2004-04-07 18:12:38";
if ($date =~ m/^(d{4})-(dd)-(dd) (dd):(dd):(dd)$/) {
my ($YY, $MM, $DD, $HH, $mm, $ss) = ($1, $2, $3, $4, $5, $6);
Pour obtenir le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit
de manière portable, il faut en plus tester l'origine des temps qui n'est pas
la même sur tous les OS (cf. perldoc -f time).
Ca marche parfaitement, je crois que ce qui n'alais pas c'est qu'il faut soustraire 1 au mois (pourquoi ?).
Merci.
Paul GABORIT wrote in message news:...
À (at) 7 Apr 2004 08:49:31 -0700, (nicholls) écrivait (wrote):
Je recupere un date au format suivant : 2004-04-07 18:12:38 et j'aimerais la convertir en timestamp (nb sec ecoulé depuis 1970). J'ai vu qu'il existe plein de fonction comme timelocal mais je n'arrive pas a sortir qq chose de correct (le nb de sec ne correspond pas).
Je suppose que c'est une date au format ISO (YYYY-MM-DD HH:mm:ss) et non pas à l'anglaise (avec le mois et le quantième du mois inversé). Je suppose aussi que c'est une heure locale (correspondant à la timezone de la machine qui effectue la conversion). Je suppose en plus que les heures, les minutes et les secondes sont toujours sur deux chiffres.
Dans ce cas, on peut faire :
use Time::Local; # a installer
my $date = "2004-04-07 18:12:38";
if ($date =~ m/^(d{4})-(dd)-(dd) (dd):(dd):(dd)$/) { my ($YY, $MM, $DD, $HH, $mm, $ss) = ($1, $2, $3, $4, $5, $6);
Pour obtenir le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit de manière portable, il faut en plus tester l'origine des temps qui n'est pas la même sur tous les OS (cf. perldoc -f time).
Paul GABORIT
À (at) 8 Apr 2004 00:27:19 -0700, (nicholls) écrivait (wrote):
Ca marche parfaitement, je crois que ce qui n'alais pas c'est qu'il faut soustraire 1 au mois (pourquoi ?).
Pourquoi pas ? Les conventions humaines sont rarement celles adoptées par les machines ;-)
Peut-être pour faciliter la recherche du nom du mois dans un tableau (indicé de 0 à 11)...
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>