|  | 		    
					
        
         
          
         
	
          | |  | Tidsformat, konvertering Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 09:50
 | 
 |  | 
 Jeg har en masse datofelter jeg har været så idiotisk at gemme i
 format yyyymmddhhmm. f.eks. 200411041215 for d. 4/11-2004 kl. 12:15.
 Nu har jeg et ønske om at have dagenavne på og jeg ærgrer mig over at
 jeg ikke har gemt i time formatet. Dvs. det man får returneret fra
 time.
 perl -e "print time"
 1099730808
 Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 Pft.
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
  Peter Makholm (06-11-2004) 
 
	
          | |  | Kommentar Fra : Peter Makholm
 | 
 Dato :  06-11-04 10:10
 | 
 |  | 
 
            Lars Kim Lund <lkl@fabel.dk> writes:
 > Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 > dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 > 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 > et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 Date::Manip
 $mydate = "200411061008";
 $unixdate = UnixDate(ParseDate($mydate), "%s");
 -- 
  Peter Makholm     |        We constantly have to keep in mind why natural
  peter@makholm.net |    languages are good at what they're good at. And to
 http://hacking.dk  |     never forget that Perl is a human language first,
                    |                        and a computer language second
            
             |  |  | 
  Morten Guldager (06-11-2004) 
 
	
          | |  | Kommentar Fra : Morten Guldager
 | 
 Dato :  06-11-04 10:14
 | 
 |  | 
 
            2004-11-06 Peter Makholm wrote
 > Lars Kim Lund <lkl@fabel.dk> writes:
 >
 >> Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 >> dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 >> 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 >> et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 >
 > Date::Manip
 Jeg mindes noget om at Date::Manip er ret langsom, men det kan 
 snilt være en gammel skrøne.
 /Morten    |  |  | 
   Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 10:24
 | 
 |  | 
 
            Morten Guldager <spamtrap@mogul.dk> wrote:
 >> Date::Manip
 >
 >Jeg mindes noget om at Date::Manip er ret langsom, men det kan 
 >snilt være en gammel skrøne.
 Det skriver han selv i sin man.
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
  Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 10:23
 | 
 |  | 
 
            Peter Makholm <peter@makholm.net> wrote:
 >> Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 >> dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 >> 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 >> et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 >
 >Date::Manip
 >
 >$mydate = "200411061008";
 >$unixdate = UnixDate(ParseDate($mydate), "%s");
 Tak - kan det mon passe den ikke bryder sig om Win32?
 C:\>perl test.pl
 Date::Manip version 200411061008 required--this is only version 5.42
 at C:/Perl/lib/Exporter/Heavy.pm line 115.
 BEGIN failed--compilation aborted at test.pl line 5.
 Andre muligheder?
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
   Thorbjoern Ravn Ande~ (06-11-2004) 
 
	
          | |  | Kommentar Fra : Thorbjoern Ravn Ande~
 | 
 Dato :  06-11-04 12:01
 | 
 |  | 
 
            Lars Kim Lund <lkl@fabel.dk> writes:
 > C:\>perl test.pl
 > Date::Manip version 200411061008 required--this is only version 5.42
 ppm?
 -- 
   Thorbjørn Ravn Andersen
  http://unixsnedkeren.dk/ravn |  |  | 
    Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 12:36
 | 
 |  | 
 
            Thorbjoern Ravn Andersen <nospam0000@c.dk> wrote:
 >> C:\>perl test.pl
 >> Date::Manip version 200411061008 required--this is only version 5.42
 >
 >ppm?
 ?
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
     Thorbjoern Ravn Ande~ (06-11-2004) 
 
	
          | |  | Kommentar Fra : Thorbjoern Ravn Ande~
 | 
 Dato :  06-11-04 13:25
 | 
 |  | 
 
            Lars Kim Lund <lkl@fabel.dk> writes:
 > >> C:\>perl test.pl
 > >> Date::Manip version 200411061008 required--this is only version 5.42
 > >
 > >ppm?
 > 
 > ?
 Jeg havde ikke fanget din forkerte use, og jeg troede du måske skulle
 have opdateret modulet.  Det bruger man da vist ppm til under Windows.
 -- 
   Thorbjørn Ravn Andersen
  http://unixsnedkeren.dk/ravn |  |  | 
  Morten Guldager (06-11-2004) 
 
	
          | |  | Kommentar Fra : Morten Guldager
 | 
 Dato :  06-11-04 10:12
 | 
 |  | 
 
            2004-11-06 Lars Kim Lund wrote
 >
 > Jeg har en masse datofelter jeg har været så idiotisk at gemme i
 > format yyyymmddhhmm. f.eks. 200411041215 for d. 4/11-2004 kl. 12:15.
 >
 > Nu har jeg et ønske om at have dagenavne på og jeg ærgrer mig over at
 > jeg ikke har gemt i time formatet. Dvs. det man får returneret fra
 > time.
 >
 > perl -e "print time"
 > 1099730808
 >
 > Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 > dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 > 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 > et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 Mon ikke Time::Local er din ven her?
 use Time::Local
 my $t = timelocal($sekund,$minut,$time,$dag,$maaned - 1,$aar + 1900);
 De -1 og +1900 ligner noget jeg har gjort for at være kompatibel med
 output fra localtime().  (kan ikke lige huske det.)
 /Morten    |  |  | 
  Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 10:30
 | 
 |  | 
 
            Morten Guldager <spamtrap@mogul.dk> wrote:
 >> Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 >> dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 >> 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 >> et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 >
 >Mon ikke Time::Local er din ven her?
 >
 >use Time::Local
 >my $t = timelocal($sekund,$minut,$time,$dag,$maaned - 1,$aar + 1900);
 >
 >De -1 og +1900 ligner noget jeg har gjort for at være kompatibel med
 >output fra localtime().  (kan ikke lige huske det.)
 Det ser godt ud - tak.
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
  Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 11:02
 | 
 |  | 
 
            Morten Guldager <spamtrap@mogul.dk> wrote:
 >Mon ikke Time::Local er din ven her?
 >
 >use Time::Local
 >my $t = timelocal($sekund,$minut,$time,$dag,$maaned - 1,$aar + 1900);
 >
 >De -1 og +1900 ligner noget jeg har gjort for at være kompatibel med
 >output fra localtime().  (kan ikke lige huske det.)
 -1 er for at korrigere et offset, timelocal mener at januar = 0. Den
 forventer det fulde årstal, så hvis $aar er fra localtime (base 1900)
 så skal det lægges til.
 Det virker fint. Tak for hjælpen :)
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
  Lars Balker Rasmusse~ (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Balker Rasmusse~
 | 
 Dato :  06-11-04 12:29
 | 
 |  | 
 
            Lars Kim Lund <lkl@fabel.dk> writes:
 > Peter Makholm <peter@makholm.net> wrote:
 >>Date::Manip
 >>
 >>$mydate = "200411061008";
 >>$unixdate = UnixDate(ParseDate($mydate), "%s");
 >
 > C:\>perl test.pl
 > Date::Manip version 200411061008 required--this is only version 5.42
 > at C:/Perl/lib/Exporter/Heavy.pm line 115.
 > BEGIN failed--compilation aborted at test.pl line 5.
 Det ligner et manglende semikolon efter "use Date::Manip".
 -- 
 Lars Balker Rasmussen                             Consult::Perl
                                                  http://consult-perl.dk |  |  | 
  Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 12:36
 | 
 |  | 
 
            Lars Balker Rasmussen <lars@balker.org> wrote:
 >>>Date::Manip
 >>>
 >>>$mydate = "200411061008";
 >>>$unixdate = UnixDate(ParseDate($mydate), "%s");
 >>
 >> C:\>perl test.pl
 >> Date::Manip version 200411061008 required--this is only version 5.42
 >> at C:/Perl/lib/Exporter/Heavy.pm line 115.
 >> BEGIN failed--compilation aborted at test.pl line 5.
 >
 >Det ligner et manglende semikolon efter "use Date::Manip".
 Det har du ret i - den havde jeg overset. Men selv med det på siger
 den
 Undefined subroutine &main::ParseDate called at test2.pl line 5.
 - Men det er ligemeget iht. mit problem, eftersom jeg har løst det med
 time::local (Tak, Morten ...).
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
  Lars Balker Rasmusse~ (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Balker Rasmusse~
 | 
 Dato :  06-11-04 12:56
 | 
 |  | 
 
            Lars Kim Lund <lkl@fabel.dk> writes:
 >>>>Date::Manip
 >>>>
 >>>>$mydate = "200411061008";
 >>>>$unixdate = UnixDate(ParseDate($mydate), "%s");
 >>
 >>Det ligner et manglende semikolon efter "use Date::Manip".
 >
 > Det har du ret i - den havde jeg overset. Men selv med det på siger
 > den
 >
 > Undefined subroutine &main::ParseDate called at test2.pl line 5.
 Det ligner et manglende use i "use Date::Manip"    -- 
 Lars Balker Rasmussen                             Consult::Perl
                                                  http://consult-perl.dk |  |  | 
  Lars Kim Lund (06-11-2004) 
 
	
          | |  | Kommentar Fra : Lars Kim Lund
 | 
 Dato :  06-11-04 15:44
 | 
 |  | 
 
            Lars Balker Rasmussen <lars@balker.org> wrote:
 >> Undefined subroutine &main::ParseDate called at test2.pl line 5.
 >
 >Det ligner et manglende use i "use Date::Manip"    Ja. Jeg tør næsten ikke skrive hvilken fejl den giver mig nu ..
 -- 
 Lars Kim Lund
http://www.net-faq.dk/ |  |  | 
  Jesper Louis Anderse~ (06-11-2004) 
 
	
          | |  | Kommentar Fra : Jesper Louis Anderse~
 | 
 Dato :  06-11-04 20:48
 | 
 |  | Lars Kim Lund <lkl@fabel.dk> wrote:
 >
 > Jeg har en masse datofelter jeg har v?ret s? idiotisk at gemme i
 > format yyyymmddhhmm. f.eks. 200411041215 for d. 4/11-2004 kl. 12:15.
 >
 > Nu har jeg et ?nske om at have dagenavne p? og jeg ?rgrer mig over at
 > jeg ikke har gemt i time formatet. Dvs. det man f?r returneret fra
 > time.
 >
 > perl -e "print time"
 > 1099730808
 >
 > Nu er sp?rgsm?let s?. Er der en m?de jeg kan konvertere mit
 > dato-/tidsformat til time. Er det s? simpelt at regne forskellen fra
 > 01.01.1970 kl. 0:0 og tage forbehold for skud?r hvert 4. ?r? Og er der
 > et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 >
 > Pft.
 
 man date
 
 ??
 
 --
 < Keltus> .. now back to reading my /. and compiling my \
 l33t gentoo linux which makes it 5000% faster than \
 your lame not-even-a-real-OS computer. Uptime: 20000 days, 4 hours
 
 
 
 |  |  | 
  Tore Aursand (08-11-2004) 
 
	
          | |  | Kommentar Fra : Tore Aursand
 | 
 Dato :  08-11-04 14:36
 | 
 |  | On Sat, 06 Nov 2004 09:49:36 +0100, Lars Kim Lund wrote:
 > Jeg har en masse datofelter jeg har været så idiotisk at gemme i
 > format yyyymmddhhmm. f.eks. 200411041215 for d. 4/11-2004 kl. 12:15.
 >
 > Nu har jeg et ønske om at have dagenavne på og jeg ærgrer mig over at
 > jeg ikke har gemt i time formatet. Dvs. det man får returneret fra
 > time.
 >
 > perl -e "print time"
 > 1099730808
 >
 > Nu er spørgsmålet så. Er der en måde jeg kan konvertere mit
 > dato-/tidsformat til time. Er det så simpelt at regne forskellen fra
 > 01.01.1970 kl. 0:0 og tage forbehold for skudår hvert 4. år? Og er der
 > et modul / kald jeg kan bruge, eller skal jeg programmere det selv?
 
 #!/usr/bin/perl
 #
 use strict;
 use warnings;
 use Time::Local;
 
 # ...
 
 sub datetime_to_time {
 my $datetime = shift;
 
 if ( $datetime =~ m,^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})$, ) {
 my $time = timelocal( 0, $5, $4, $3, $2, $1 );
 return $time;
 }
 else {
 warn "Illegal date/time format; $datetime\n";
 }
 }
 
 
 --
 Tore Aursand <toreau@gmail.com>
 "I am become Death, shatterer of worlds." (J. Robert Oppenheimer, upon
 witnessing the explosion of the first atomic bomb.)
 
 
 |  |  | 
  Morten Guldager (08-11-2004) 
 
	
          | |  | Kommentar Fra : Morten Guldager
 | 
 Dato :  08-11-04 20:14
 | 
 |  | 
 
            2004-11-08 Tore Aursand wrote
 > On Sat, 06 Nov 2004 09:49:36 +0100, Lars Kim Lund wrote:
 >> Jeg har en masse datofelter jeg har været så idiotisk at gemme i
 >> format yyyymmddhhmm. f.eks. 200411041215 for d. 4/11-2004 kl. 12:15.
 > 
 >     if ( $datetime =~ m,^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})$, ) {
 >         my $time = timelocal( 0, $5, $4, $3, $2, $1 );
 Og så måske en eval rundt om timelocal. Den detonerer vist nok 
 i et hult drøn hvis man beder den om noget der ikke kan lade
 sig gøre.
 /Morten    |  |  | 
  Peter Makholm (08-11-2004) 
 
	
          | |  | Kommentar Fra : Peter Makholm
 | 
 Dato :  08-11-04 20:22
 | 
 |  | 
 
            Morten Guldager <spamtrap@mogul.dk> writes:
 > Og så måske en eval rundt om timelocal. Den detonerer vist nok 
 > i et hult drøn hvis man beder den om noget der ikke kan lade
 > sig gøre.
 Alternativt ignorerer man underlige datoer (gigo) og bruger
 timelocal_nocheck. Den er også meget rar at have hvis man skal lege
 med sådan noget som årets 282. dag eller mere generelt lægge et
 bestemt tidsrum til en dato.
 -- 
  Peter Makholm     |        We constantly have to keep in mind why natural
  peter@makholm.net |    languages are good at what they're good at. And to
 http://hacking.dk  |     never forget that Perl is a human language first,
                    |                        and a computer language second
            
             |  |  | 
 |  |