Jemand zu Hause?
2014-12-08T11:39:02 rostiGuck mal, ob Du bei den Datum/Zeitfunktionen Deines RDBMS fündig wirst.
Time::Piece kann das Addieren und Subtrahieren eines Datums einer Zeit.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
#!/usr/bin/perl use strict; use warnings; use Time::Piece; use Time::Seconds; my $DATEFORMAT = '%d.%m.%y %H:%M:%S'; # siehe http://www.unix.com/man-page/FreeBSD/3/strftime/ my $from = "05.12.14 12:00:44,050000"; $from =~ s/,\d+//; my $to = "05.12.14 12:00:44,070425"; $to =~ s/,\d+//; my $t1 = Time::Piece->strptime( $from, $DATEFORMAT ); my $t2 = Time::Piece->strptime( $to, $DATEFORMAT ); if ( $t1 == $t2 ) { $t1 += ONE_MINUTE; $t1 = $t1->strftime($DATEFORMAT); $t2 -= ONE_MINUTE; $t2 = $t2->strftime($DATEFORMAT); } print $t1, "\n", $t2, "\n"; =comment Ergibt: 05.12.14 12:01:44 05.12.14 11:59:44
Time::Seconds exportiert wird.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
foreach( @Ergebnis_SQL_Monitoring_DB )
{
my $Anzahl = 1;
my $x = 0;
for ( $x = 0; $x < $Anzahl; $x++ )
{
if ( defined( $Ergebnis_SQL_Monitoring_DB[$i][$x] ) and $Ergebnis_SQL_Monitoring_DB[$i][4] == $ARGV[3] ) {
print $Ergebnis_SQL_Monitoring_DB[$i][14] , "\n"; # Ausgabe der Inhalte aus der Abfrage
push( @DB_Rueckgabe_Parameter, $Ergebnis_SQL_Monitoring_DB[$i][14] ); # Erweiterung des Arrays um die Inhalte aus der Abfrage
print "\n";
print "TS aus DB - I : $Ergebnis_SQL_Monitoring_DB[$i][9]" , "\n"; # Lese genaue Zeit - Angabe ( V ) aus DB
print "TS aus DB - II : $Ergebnis_SQL_Monitoring_DB[$i][10]" , "\n"; # Lese genaue Zeit - Angabe ( B ) aus DB
$Konvertierung_TS_I = $Ergebnis_SQL_Monitoring_DB[$i][9]; # Umwandlung des Strings in Variable
$Konvertierung_TS_II = $Ergebnis_SQL_Monitoring_DB[$i][10]; # Umwandlung des Strings in Variable
&TS_Konvertierung(); # Aufruf der Sub zur Kovertierung des TS
&Pruefung_Strings( $Ergebnis_SQL_Monitoring_DB[$i][14] , $Ergebnis_SQL_Monitoring_DB[$i][4] ); # Aufruf der Sub zur Erkennung der Semicolons
}
}
$i++;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
sub TS_Konvertierung {
my $TS_I_Date_Konvertierung = substr( $Konvertierung_TS_I , length( $Konvertierung_TS_I ) - 24 , 17 ); # Separierung des Datums
print "$TS_I_Date_Konvertierung" , "\n";
$TS_I_Date_Konvertierung =~ s/,\d+//;
# ------------------------------------------------------------------------------------------------------------
my $TS_II_Date_Konvertierung = substr( $Konvertierung_TS_II , length( $Konvertierung_TS_II ) - 24 , 17 ); # Separierung des Datums
print "$TS_II_Date_Konvertierung" , "\n";
$TS_II_Date_Konvertierung =~ s/,\d+//;
# ------------------------------------------------------------------------------------------------------------
my $t1 = Time::Piece->strptime( $TS_I_Date_Konvertierung, $DATEFORMAT );
my $t2 = Time::Piece->strptime( $TS_II_Date_Konvertierung, $DATEFORMAT );
if ( $t1 == $t2 )
{
$t1 += ONE_MINUTE;
$t1 = $t1->strftime($DATEFORMAT);
$t2 -= ONE_MINUTE;
$t2 = $t2->strftime($DATEFORMAT);
}
print $t1, "\n", $t2, "\n";
}
Time::Seconds geladen ist oder nicht. Derzeit vermute ich eben, dass es nicht geladen wurde.
Guest PERLScripterHi Linuxer. Sorry, wenn das nicht ersichtlich war, aber in einem
vorherigem Post habe ich geschrieben, dass der Code einzeln, in
einem ganz neuen Script einwandfrei funktioniert.
AllgemeinesWieFrageIchbeiPerlCommunity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use Time::Piece;
use Time::Seconds;
$Umwandlung_TS_I =~ s/,\d+//;
$Umwandlung_TS_II =~ s/,\d+//;
my $TS_I_Konvertierung = Time::Piece->strptime( $Umwandlung_TS_I, $DATEFORMAT );
my $TS_II_Konvertierung = Time::Piece->strptime( $Umwandlung_TS_II, $DATEFORMAT );
if ( $TS_I_Konvertierung == $TS_II_Konvertierung )
{
$TS_I_Konvertierung -= ONE_MINUTE;
$TS_I_Konvertierung = $TS_I_Konvertierung->strftime($DATEFORMAT);
$TS_II_Konvertierung += ONE_MINUTE;
$TS_II_Konvertierung = $TS_II_Konvertierung->strftime($DATEFORMAT);
}
print "\n";
print "Konvertierter TS I : $TS_I_Konvertierung", "\n";
print "Konvertierter TS II : $TS_II_Konvertierung", "\n";
print "\n";
1 2
use 5.010; print '05.12.14 12:00:04' =~ s/(\d{2})\.(\d{2})\.(\d{2})\ (\d{2})\:(\d{2})\:(\d{2})/20$3$2$1$4$5$6/gr;
QuoteCode (perl): (dl )1 2use 5.010; print '05.12.14 12:00:04' =~ s/(\d{2})\.(\d{2})\.(\d{2})\ (\d{2})\:(\d{2})\:(\d{2})/20$3$2$1$4$5$6/gr;
1 2 3 4 5 6 7 8 9 10 11 12
#!/usr/bin/perl use strict; use warnings; my $datum = '05.12.14 12:00:04'; my $timestamp = $datum; $timestamp =~ s/(\d{2})\.(\d{2})\.(\d{2})\ (\d{2})\:(\d{2})\:(\d{2})/20$3$2$1$4$5$6/; print $timestamp;
(my $timestamp = $datum) =~ s/(\d{2})\.(\d{2})\.(\d{2})\ (\d{2})\:(\d{2})\:(\d{2})/20$3$2$1$4$5$6/;
2014-12-09T14:40:39 RaubtierWarum wandelst du mit strftime nicht direkt ins gewünschte Format?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#!/usr/bin/perl use strict; use warnings; use Time::Piece; use Time::Seconds; my $DATEFORMAT_FROM = '%d.%m.%y %H:%M:%S'; my $DATEFORMAT_TO = '%Y%m%d%H%M%S'; my $from = "05.12.14 12:00:44,050000"; $from =~ s/,\d+//; my $to = "05.12.14 12:00:44,070425"; $to =~ s/,\d+//; my $t1 = Time::Piece->strptime( $from, $DATEFORMAT_FROM ); my $t2 = Time::Piece->strptime( $to, $DATEFORMAT_FROM ); if ( $t1 == $t2 ) { $t1 += ONE_MINUTE; $t1 = $t1->strftime($DATEFORMAT_TO); $t2 -= ONE_MINUTE; $t2 = $t2->strftime($DATEFORMAT_TO); } print $t1, "\n", $t2, "\n";
system( "$Uebergebene_PS.pl" , $Schalter_DB_Rueckgabe , $Uebergebene_PS , $Uebergebene_SSTs , $Uebergebene_MTs , @DB_Rueckgabe_Parameter );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
sub PS_Analyse {
my $i = 0;
print "------------------------------------------------------------------------" , "\n";
splice( @ARGV , 0 , 4 );
$i = 0;
foreach $DB_Parameter_Zaehler ( @ARGV ) {
my $Anzahl = 1;
my $x = 0;
for ( $x = 0; $x < $Anzahl; $x++ )
{
if ( defined( $DB_Parameter_Zaehler ) and $DB_Rueckgabe_MTs == '1' ) {
$Uebergabe_Parameter_Analyse = $ARGV[$i];
&Auswahl_Requests($Uebergabe_Parameter_Analyse);
}
if ( defined( $DB_Parameter_Zaehler ) and $DB_Rueckgabe_MTs == '2' ) {
$Uebergabe_Parameter_Analyse = $ARGV[$i];
&Auswahl_Replys($Uebergabe_Parameter_Analyse);
}
}
$i++;
}
}Guest PERLScripterMein Ziel ist es nun auch das Array "DB_Rueckgabe_TS" bzw. die INhalte des Arrays weiterzugeben, aber dann liest er die Werte nicht mehr korrekt ein aus dem dem Array.
1 2 3 4 5 6 7
our $foo; # wenns ein bischen mehr sein darf, fasse alles in # einer Referenz zusammen our $args = { x => 'foo', y => [1,2,3,4] };
1;
Wie frage ich & perlintro
brian's Leitfaden für jedes Perl-Problem1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $Anzahl_Parameter = @DB_Rueckgabe_Parameter;
$DB_Rueckgabe_Parameter[$Anzahl_Parameter] = "TRENNER";
my $i;
for ( $i = 0; $i < @DB_Rueckgabe_Parameter ; $i++ )
{
print "$DB_Rueckgabe_Parameter[$i]" , "\n";
if ($DB_Rueckgabe_Parameter[$i] eq 'TRENNER')
{
print "Eintrag des Trenners in Ordnung !";
}
}
Wie frage ich & perlintro
brian's Leitfaden für jedes Perl-Problem
Class::Datedate("2001-01-01") + '1m';