Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zeitkonvertierung/Regex gesucht.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Zeitkonvertierung/Regex gesucht.

    Hallo,
    da ich mich mit Regex etwas schwer tuhe, bräuchte ich fix jemand, der mir das ding basteln kann, passend auf meine Bedürfnisse.

    Ich habe ein Script, welches aus einer CSV verschiedene Daten lädt, darunter auch ein Datum.
    Das Datum kann aber in 3 verschiedenen Arten vorliegen..
    1. "normal": 01.02.2003
    2. "woche": 2014-W18
    3. "monat": 2014-M7

    Für Woche und Monat brauche ich einen Regex.

    Hier mein Code, die Funktion get_monday_of_week habe ich von HIER.
    PHP-Code:
    if ($fields[1] == date(Y)."-W".date(W))
                            
    $ex explode("-"$fields[1]);
                            
    $test explode("W"$ex[1]);
                            
    $woche $test[1];
                            
                            
    $j $ex[0];
                            
    $kw $woche;
                            
                            
    $date2 get_monday_of_week($kw,$j); 
    Mein IF State wird so halt nicht funktionieren, da ich verschiedene Wochen in der Datei habe (W18-W20 zum Beispiel) deswegen brauche ich da einen passenden Regex für.

    Vielen Dank schonmal vorab für eure Hilfe.
    Liebe Grüße,
    .PolluX

  • #2
    Schau dir mal das an: http://www.php.de/php-einsteiger/103...tml#post763310
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      jetzt hätte ich einen extra festen facepalm verdient..

      Ist sogar nen Fragethread von mir von vor 6 Monaten...

      Naja, hat sich dann ja erledigt, danke dir

      Kommentar


      • #4
        LOL, stimmt war mir vorhin gar nicht aufgefallen, das der "damals" auch schon von dir war .. hatte nur mehr das mit dem "direkten Funktionieren" der Kalenderwoche als Input-Format im Kopf ...
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von .PolluX Beitrag anzeigen
          1. "normal": 01.02.2003
          2. "woche": 2014-W18
          3. "monat": 2014-M7
          Bzgl. der (expliziten) "mehrstufigen" Inputformat-Varianten könntest du dir das hier anschauen:

          http://www.php.de/php-einsteiger/918...tml#post674170
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Solche dicken Geschütze sind doch nicht notwendig, hausl. Variante 1 und 2 wird direkt akzeptiert, Variante 3 mit etwas Nachhilfe:
            PHP-Code:
              $strDate str_replace('-M','-',$strDate);
              
            $date date_create($strDate); 
            Damit habe ich für alle obige Varianten ein DateTime-Objekt.

            LG jspit

            Kommentar


            • #7
              So sei es
              (hatte gerade keine Lust zum eroieren ob alle Varianten "direkt gefressen" werden bzw. was zu tun wäre, bla, bla ...)
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Wobei man das mit dem Monat auch noch anders lösen kann.
                So zum Beispiel:
                PHP-Code:
                $datum "2014-M07"

                $ex explode("-"$datum);
                $test explode("M"$ex[1]);
                $month $test[1];
                                        
                $date2 "01.".$month.".".$ex[0]; 
                Ist zwar mehr Script, aaaaber man erhält auch ein Date, das man weiterverwenden kann um es z.b. in einen Timestamp zu packen oder so.

                Kommentar


                • #9
                  1. Du hast den Vorteil der DateTime Klasse noch nicht erkannt. So etwas wie get_monday_of_week brauchst du dann nicht mehr, das Thema ist in 1-2 Zeilen erledigt.
                  2. Deine "Lösung" ist speziell für die Monatsnotation, du brauchst dann wieder eine Fallunterscheidung für die anderen Notationen. Der obige 2-Zeiler erschlägt alles, probier es aus.

                  Edit: Hast du mal nachgesehen, wie alt der thread mit get_monday_of_week ist?

                  Kommentar


                  • #10
                    PHP-Code:
                    $datum '2014-M07';

                    $dateTime DateTime::createFromFormat('Y-*m'$datum, new DateTimeZone('europe/berlin'));
                    $dateTime->modify('first monday of this month');

                    var_dump($dateTime); 
                    Code:
                    object(DateTime)#2 (3) {
                      ["date"]=>
                      string(19) "2014-08-04 00:00:00"
                      ["timezone_type"]=>
                      int(3)
                      ["timezone"]=>
                      string(13) "Europe/Berlin"
                    }
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar

                    Lädt...
                    X