2014-12-08T11:39:02 rostiGuck mal, ob Du bei den Datum/Zeitfunktionen Deines RDBMS fündig wirst.
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
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";
}
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.
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;
1
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 !";
}
}
date("2001-01-01") + '1m';