Avatar billede lmdthel Nybegynder
24. august 2003 - 21:10 Der er 9 kommentarer og
2 løsninger

dato/tid sammenligning med perl

hej folkens

jeg henter fra en DB en dato tid:

$maxdatetime = 2003-07-13 07:00:00


så har jeg i forvejen en anden dato tid i
følgende format:

$datetime = 0307131400

(03 = år ,07 =md,1324 hhmmss)

så vil jeg gerne sammenligne de to med "gt",
for at se om maxdatetime er større en
datetime.

if($maxdatetime gt $datetime){print "hello
world";}

Men da de 2 datoer er i forskelligt format
så virker det ikke , hvordan kan jeg få dem i et format så jeg kan sammenligne dem ??

///Thomas
Avatar billede mfalck Praktikant
24. august 2003 - 21:12 #1
hent Date

Date::Calc qw(Delta_Days Add_Delta_DHMS Add_Delta_Days);
Avatar billede mfalck Praktikant
24. august 2003 - 21:12 #2
ups - lidt for hurtig på aftrækkeren

Date-modulet kan hentes på

http://search.cpan.org/dist/Date-Calc/
Avatar billede lmdthel Nybegynder
24. august 2003 - 22:33 #3
hi mfalck

oki, jeg er lidt ny til perl, jeg har installeret modulet, men kan du ikke give mig et eksempel på hvordan du vil få de 2 formater til noget ens ?

Thomas
Avatar billede erikjacobsen Ekspert
24. august 2003 - 23:02 #4
Skal man forstå "0307131400" som 13. juli 2003 kl. 14.00 ?
Avatar billede breum Nybegynder
24. august 2003 - 23:13 #5
$maxdatetime = "2003-07-13 07:00:00";
$datetime = "0307131400";
$maxdatetime.="end";
$maxdatetime=~ s/\d\dend//g;
$maxdatetime=~ s/^20//;
$maxdatetime=~ s/\-//g;
$maxdatetime=~ s/\://g;
$maxdatetime=~ s/\ //g;


if($maxdatetime gt $datetime){print "maxdatetime er størst";}
else {print "maxdatetime er mindst";}
print "\n$maxdatetime\n$datetime";
Avatar billede breum Nybegynder
24. august 2003 - 23:15 #6
er IKKE år 2000 sikret, det kan tilføjes, hvis det ønskes

beklager "end" metoden, men jeg kunne ikke få \$ til at virke og ovenstående virker.
Avatar billede breum Nybegynder
24. august 2003 - 23:16 #7
Ovenstående kryptiske bemærkning vetyder at det kun virker hvis begge datoer er efter (eller =) 1/1 2000
Avatar billede mfalck Praktikant
25. august 2003 - 08:28 #8
Date::Calc kan faktisk sammenligne en række forskellige formater, jeg har selv brugt den tit.

Du kan hente den ved http://search.cpan.org/CPAN/authors/id/S/ST/STBEY/Date-Calc-5.3.tar.gz

eller
perl -MCPAN -e 'install Date'
Avatar billede mfalck Praktikant
25. august 2003 - 08:35 #9
Hov du skal bruge denneher istedet:

http://search.cpan.org/CPAN/authors/id/S/SB/SBECK/DateManip-5.42a.tar.gz

du installerer det med at pakke den oventstående fil ud. Så kører du
$ perl Makefile.PL
$ make
$ make test
$ make install      (som root)

så kan du bruge modulet i dine programmer.

for at bruge modulet så skal du

use Date::Manip qw(ParseDate UnixDate);

$date1 = ParseDate($string1);
  $date2 = ParseDate($string2);
  $flag = Date_Cmp($date1,$date2);
  if ($flag<0) {
    # date1 is earlier
  } elsif ($flag==0) {
    # the two dates are identical
  } else {
    # date2 is earlier
  }
Avatar billede mfalck Praktikant
25. august 2003 - 08:35 #10
Date::Manip er meget fleksibel med datoer:

$date = ParseDate("today");
  $date = ParseDate("1st thursday in June 1992");
  $date = ParseDate("05/10/93");
  $date = ParseDate("12:30 Dec 12th 1880");
  $date = ParseDate("8:00pm december tenth");
  if (! $date) {
    # Error in the date
  }
Avatar billede lmdthel Nybegynder
25. august 2003 - 09:13 #11
Hi i 2.

Mange tak for hjælpen,jeg har lige fået breums foreslag til at virke, men jeg vil bestemt kigge på det som mfalck foreslår..

Tak for hjælpen

Thomas
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester