Thread Variable _ ? (52 answers)
Opened by bianca at 2020-12-25 10:24

bianca
 2021-01-04 09:32
#193067 #193067
User since
2009-09-13
7011 articles
BenutzerIn

user image
O je o je. Aber ich lasse mich nicht von Windows abbringen :)

Ich denke, dass ich eine ganz bestimmte Stelle (eine Dateisynchronisation abhängig vom Zeitstempel) jetzt erst einmal so umschiffe:
Code (perl): (dl )
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
#use Win32::UTCFileTime qw(:globally);
require Date::Calc; # Date::Calc ist eh systemweit eingebunden

#system 'cls';

my @files = (
    'xyz',  # vom 15.08. also mit Sommerzeit richtig ist 19:14
    'abc',  # vom 16.12. also ohne Sommerzeit richtig ist 12:42
);

schleife(\@files);

sub schleife {
    my ($files) = @_;
    foreach my $datei (@$files) {
        say "Datei '$datei'";
        my $stat9 = (stat($datei))[9];

        # Perl's localtime
        my @epoch = localtime $stat9;
        $epoch[4] ++;
        $epoch[5] += 1900;
        say sprintf(
            "$stat9 --> %02d.%02d.%04d %02d:%02d:%02d",
            @epoch[3..5],
            reverse(@epoch[0..2])
        );

        # Date::Calc
        @epoch = Date::Calc::Localtime($stat9);
        # liefert Jahr,Monat,Tag,Stunde,Minute,Sekunde,DayOfYear,DayOfWeek,SommerzeitKNZ
        say sprintf(
            "Date::Calc --> %02d.%02d.%04d %02d:%02d:%02d KNZ: $epoch[8]",
            reverse(@epoch[0..2]),
            @epoch[3..5]
        );

        # Sommerzeitkorrektur
        if ($^O =~ /mswin/i && $epoch[8] == 1) {
            @epoch = Date::Calc::Add_Delta_DHMS(@epoch[0..5],0,1,0,0);  # 1 Stunde addieren
            say sprintf(
                "korrigiert --> %02d.%02d.%04d %02d:%02d:%02d",
                reverse(@epoch[0..2]),
                @epoch[3..5]
            );
        }

        say "\n";
    }
}

Geht um die Bedingung $epoch[8] == 1, die auf das Sommerzeit Flag $dst von CPAN:Date::Calc schaut.
Würde mir Sicherheit geben, wenn du/ihr mal drauf schaut und mir deine/eure Meinung sag(s)t. Danach wäre das dann auch vorerst mal gelöst (umgangen, verbastelt wie auch immer).

Editiert von bianca: $^O =~ /mswin/i ergänzt
Last edited: 2021-01-04 09:37:56 +0100 (CET)
10 print "Hallo"
20 goto 10

View full thread Variable _ ?