Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datum - Rangeprüfung in Formatierung oder Validierung?

Einklappen

Neue Werbung 2019

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

  • #16
    PHP-Code:
    <?php

        error_reporting
    (-1);
        
    $inbound = isset($_POST['evalToDate']) ? trim($_POST['evalToDate']) : false;
        
        if ( 
    $inbound ) {
        
            
    $possibleDateSchemes = array(
                
    'Y',
                
    'd',
                
    'dm',
                
    'd.m',
                
    'd.m.',
                
    'd.m.Y',
                
    'd.m.y'
            
    );
            
            
    $earnedDates = array();
            
    $failedSchemes = array();
            
            foreach ( 
    $possibleDateSchemes as $dateScheme )
            {
                
    $cur date_create_from_format($dateScheme$inbound, new DateTimeZone('GMT'));
                
                if ( 
    $cur instanceof DateTime ) {
                    
    $curErrors $cur->getLastErrors();
                    
    $curErrors array_filter($curErrors'is_numeric');
                    
    $curErrors = (bool) array_sum($curErrors);
                    
                    if ( 
    $curErrors ) {
                        
                        
    $failedSchemes$inbound ][] = $dateScheme;
                        continue;
                    }
                    
                    
    $earnedDates$dateScheme ] = clone $cur;
                }
                else {
                    
    $failedSchemes$inbound ][] = $dateScheme;
                }
            }
        
        }


    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <title>Date Test</title>
        </head>
        <body>
            <form target="" method="post">
                <input type="text" name="evalToDate" value="" />
            </form>
            <div>
    <pre><?php if ( isset($earnedDates) ) {
        if ( 
    count($earnedDates) > ) {
            
    var_export($earnedDates);
        }
        else {
            echo 
    'invalid input';
        }
    ?>
    <hr />
    <?php if ( isset($failedSchemes) ) {
        if ( 
    count($failedSchemes) > ) {
            
    var_export($failedSchemes);
        }
        else {
            echo 
    'invalid input';
        }
    ?></pre></div>
        </body>
    </html>
    [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


    • #17
      tr0y: Grad dein Script kurz laufen lassen ... (wieder mal) sehr interessanter Ansatz, danke! Das werd ich mir am abend im Detail durchkauen!
      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


      • #18
        Mit Absicht nicht "ganz fertig", ich weiß ja wie gern du kaust'. :P
        [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


        • #19
          *durchgekaut* Die Funktion macht nun grundsätzlich genau was ich zu Beginn wollte. Validierung und Formatierung ohne String-Schnibbelei und weit weniger Code. Danke nochmals tr0y!

          Frage: Ist die Rückgabe eines arrays ODER false ein Kritikpunkt? Ich finde ein array(false, false) zurückzugeben ist noch doofer

          PHP-Code:
          function checkAndISONormalizeDate($sDate) {
              
              if ( empty(
          $sDate) ) return false;
                  
              
          $possibleDateSchemes = array(
                  
          'd''dm''dmy''dmY''d.m''d.m.''d.m.y''d.m.Y'
              
          );
              
              foreach ( 
          $possibleDateSchemes as $dateScheme ) {

                  
          $cur date_create_from_format($dateScheme$sDate, new DateTimeZone('GMT'));
                 
                  if ( 
          $cur instanceof DateTime ) {

                      
          $curErrors $cur->getLastErrors();
                      
          $curErrors array_filter($curErrors'is_numeric');
                      
          $curErrors = (bool) array_sum($curErrors);
                      
                      if (!
          $curErrors ) {
                          return array(
          "DE" => $cur->format('d.m.Y'), "ISO" => $cur->format('Y-m-d'));
                      }
                  }
              }
              return 
          false;

          }

          // test

          error_reporting(-1);

          $aDates = array( 
              
          "1""12""112""012""102""1111""1122""15113""151113"
              
          "1.12.""01.12.""01.12.12""10.12.2010""31.04.2012""29.02.11""10-11-12"
          ); 

          echo 
          "<pre>";
          foreach (
          $aDates as $date) { 
              echo 
          $date ."<br>"
              
          var_dump(checkAndISONormalizeDate($date));
              echo 
          "------------------------------------------<br>"

          echo 
          "</pre>"
          Usage-Output:

          Code:
          1
          array
            'DE' => string '01.07.2012' (length=10)
            'ISO' => string '2012-07-01' (length=10)
          ------------------------------------------
          12
          array
            'DE' => string '12.07.2012' (length=10)
            'ISO' => string '2012-07-12' (length=10)
          ------------------------------------------
          112
          array
            'DE' => string '11.02.2012' (length=10)
            'ISO' => string '2012-02-11' (length=10)
          ------------------------------------------
          012
          array
            'DE' => string '01.02.2012' (length=10)
            'ISO' => string '2012-02-01' (length=10)
          ------------------------------------------
          102
          array
            'DE' => string '10.02.2012' (length=10)
            'ISO' => string '2012-02-10' (length=10)
          ------------------------------------------
          1111
          array
            'DE' => string '11.11.2012' (length=10)
            'ISO' => string '2012-11-11' (length=10)
          ------------------------------------------
          1122
          array
            'DE' => string '11.10.2013' (length=10)
            'ISO' => string '2013-10-11' (length=10)
          ------------------------------------------
          15113
          array
            'DE' => string '15.11.2003' (length=10)
            'ISO' => string '2003-11-15' (length=10)
          ------------------------------------------
          151113
          array
            'DE' => string '15.11.2013' (length=10)
            'ISO' => string '2013-11-15' (length=10)
          ------------------------------------------
          1.12.
          array
            'DE' => string '01.12.2012' (length=10)
            'ISO' => string '2012-12-01' (length=10)
          ------------------------------------------
          01.12.
          array
            'DE' => string '01.12.2012' (length=10)
            'ISO' => string '2012-12-01' (length=10)
          ------------------------------------------
          01.12.12
          array
            'DE' => string '01.12.2012' (length=10)
            'ISO' => string '2012-12-01' (length=10)
          ------------------------------------------
          10.12.2010
          array
            'DE' => string '10.12.2010' (length=10)
            'ISO' => string '2010-12-10' (length=10)
          ------------------------------------------
          31.04.2012
          boolean false
          ------------------------------------------
          29.02.11
          boolean false
          ------------------------------------------
          10-11-12
          boolean false
          ------------------------------------------
          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


          • #20
            Für meine nötigen Zwecke hab ich es mal so eingebaut.
            PHP-Code:
                function normalizeDateDE($sDate) {
                    if (empty(
            $sDate)) return false;
                    
            $possibleDateSchemes = array(
                        
            'd''dm''dmy''dmY''d.m''d.m.''d.m.y''d.m.Y'
                    
            );
                    foreach (
            $possibleDateSchemes as $dateScheme) {
                        
            $curDate date_create_from_format($dateScheme$sDate, new DateTimeZone('GMT'));
                        if (
            $curDate instanceof DateTime) {
                            
            // errors zB bei falschem Datum
                            
            $curErrors $curDate->getLastErrors();
                            
            $curErrors array_filter($curErrors'is_numeric');
                            
            $curErrors = (bool) array_sum($curErrors);
                            
            // keine fehler, dann fertig raus
                            
            if (!$curErrors) return $curDate->format('d.m.Y');
                        }
                    }
                    return 
            false;
                } 
            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


            • #21
              Mal zu Ende "gebaut":

              Source:
              PHP-Code:
              <?php

              /**
               *  Date Validation and Escalation Quantifier Class
               *  (cc)2012 tr0y <me@golpha.com>
               *
               *  Served as "free software", no warrenty, no restrictions.
               *  Usage does not explicitly require crediting the author,
               *  but would be the most proper way of evience honor.
               *
               *  Requires: PHP 5.3 or better
               *
               *  DateQuantifier is a data escalation wrapper to
               *  wrap inbound (partial) numeric strings along a set
               *  of date schemes on strategical behavior rules.
               **/

              version_compare(PHP_VERSION'5.3.0''>=') or die('PHP Version too low.');
               
              /**
               *  Class Interface
               **/ 

              interface iDateQuantifier
              {

                  
              /**
                   *  Standard Timezone and Output Pattern Constants
                   **/

                  
              const STANDARD_TIMEZONE 'UTC';
                  const 
              STANDARD_OUTPUT_PATTERN 'Y-m-d H:i:s';
                  
                  
              /**
                   *  Class Sceleton
                   **/
                   
                  
              function addScheme$schemeString$key null );
                  
                  function 
              addCollisionBehavior( array $implementedSchemeKeys,
                      
              $fallbackToSchemeKey$key null );
                      
                  function 
              getDate$inboundString,
                      
              $outboundScheme self::STANDARD_OUTPUT_PATTERN$timeZone null );

              }

              class 
              DateQuantifier
                  
              implements
                      
              iDateQuantifier
              {

                  
              /**
                   *  Inbound Timezone String
                   **/

                  
              protected $inboundTZ null;
                  
                  
              /**
                   *  Scheme and Rule Storage
                   **/
                  
                  
              protected $schemes = array();
                  protected 
              $rules = array();

                  
              /**
                   *  ::addScheme
                   *      adds an Scheme String served with an given key
                   *      as an detection scheme for inbound dates
                   **/
                  
                  
              public function addScheme$schemeString$key null )
                  {
                      
              $key null === $key
                          
              ? (string) $schemeString
                          
              : (string) $key;
                          
                      if ( 
              array_key_exists($key$this->schemes) ) {
                          
              $this->schemes$key ] = $schemeString;
                          return 
              false;
                      }
                      else {
                          
              $this->schemes$key ] = $schemeString;
                          return 
              true;
                      }
                  }
                  
                  
              /**
                   *  ::addCollisionBehavior
                   *      adds an collision behavior served with an given key
                   *      to let multiple detections fallback to one single
                   *      and finaly used scheme
                   **/
                   
                  
              public function addCollisionBehavior( array $implementedSchemeKeys,
                      
              $fallbackToSchemeKey$key null )
                  {
                      if ( 
              null === $key ) {
                          
              $key sha1('scheme.behavior:'.microtime(true));
                      }
                      
                      if ( !
              in_array($fallbackToSchemeKey$implementedSchemeKeys) ) {
                          throw new 
              Exception('Could not select scheme, key was not found');
                      }
                      
                      if ( 
              $this->isStrictScheme$implementedSchemeKeys ) ) {
                          
              $this->rules$key ] = array(
                              
              'scheme_pool' => $implementedSchemeKeys,
                              
              'select_scheme' => $implementedSchemeKeysarray_search(
                                  
              $fallbackToSchemeKey,
                                  
              $implementedSchemeKeys
                              
              ) ]
                          );
                      }
                      else {
                          throw new 
              Exception('Impossible to add collision behavior based on'.
                              
              ' non-existing schemes');
                      }
                  }
                  
                  
              /**
                   *  ::getDate
                   *      evals each inbound string as an DateTime request
                   *      on multiple results: enforces each rule to the result
                   *      on single results: enforces the result as its detected format
                   *  
                   *  returns: An full qualified Date/Time String
                   **/
                   
                  
              public function getDate$inboundString
                      
              $outboundScheme self::STANDARD_OUTPUT_PATTERN$timeZone null )
                  {
                      if ( !empty(
              $outboundScheme) ) {
                          
              $outboundScheme = (string)$outboundScheme;
                      }
                  
                      if ( 
              $timeZone instanceof DateTimeZone ) {
                          
              $usedTZ $timeZone;
                      }
                      elseif ( 
              is_string$timeZone ) ) {
                          
              $usedTZ = new DateTimeZone($timeZone);
                      }
                      elseif ( 
              null === $timeZone ) {
                      
                          if ( 
              null === $this->inboundTZ ) {
                              
              $usedTZ = new DateTimeZone(self::STANDARD_TIMEZONE);
                          }
                          else {
                              
              $usedTZ = new DateTimeZone($this->inboundTZ);
                          }
                          
                      }
                      else {
                          throw new 
              Exception('unexpected value for second param');
                      }
                      
                      
              $foundSchemes = array();
                      foreach ( 
              $this->schemes as $key => $schemeTag )
                      {
                          
              $current date_create_from_format(
                              
              $schemeTag,
                              (string) 
              $inboundString,
                              
              $usedTZ
                          
              );
                          
                          if ( 
              $current instanceof DateTime ) {
                              
              $hasErrors = (bool) array_sum(
                                  
              array_filter(
                                      
              $current->getLastErrors(),
                                      
              'is_numeric'
                                  
              )
                              );
                              
                              if ( !
              $hasErrors ) {
                                  
              $foundSchemes$key ] = $schemeTag;
                              }
                          }
                          
                          unset(
              $current);
                      }
                      
                      if ( 
              count($foundSchemes) > ) {
                          
                          foreach ( 
              $this->rules as $key => $rule )
                          {
                          
                              
              $enforced $this->isPartOfArray(
                                  
              $rule['scheme_pool'],
                                  
              array_keys($foundSchemes)
                              );
                              
                              if ( 
              $enforced ) {
                                  
              $in date_create_from_format(
                                      
              $this->schemes$rule['select_scheme'] ],
                                      (string) 
              $inboundString,
                                      
              $usedTZ
                                  
              );
                                  
                                  if ( 
              $in instanceof DateTime ) {
                                      return 
              $in->format($outboundScheme);
                                  }
                                  else {
                                      return 
              false;
                                  }
                              }
                          }
                          
                          return 
              false;
                      }
                      elseif ( 
              count($foundSchemes) === ) {
                          return 
              date_create_from_format(
                              
              current($foundSchemes),
                              (string) 
              $inboundString,
                              
              $usedTZ
                          
              )->format($outboundScheme);
                      }
                      else {
                          return 
              false;
                      }
                  }
                  
                  
              /**
                   *  Internal methods
                   **/
                  
                  
              protected function isStrictScheme( array $mySchemes )
                  {
                      
              $poolOfSchemes array_keys($this->schemes);
                      return 
              $this->isPartOfArray$poolOfSchemes$mySchemes );
                  }
                  
                  protected function 
              isPartOfArray( array $resource, array $pieces )
                  {
                      return 
              count(array_intersect($pieces$resource)) === count($pieces);
                  }

              }
              Usage:
              PHP-Code:
              $test = new DateQuantifier();

              $test->addScheme('my''month year');
              $test->addScheme('Y''year');
              $test->addScheme('d''day');
              $test->addScheme('d.m''day and month');

              $test->addCollisionBehavior(
                  array(
              'month year''year'),
                  
              'year',
                  
              'Year before month year - rule'
              );

              $test->addCollisionBehavior(
                  array(
              'month year''year''day'),
                  
              'day',
                  
              'day before all'
              );

              var_dump$test->getDate('10.12''d.m.Y') ); 
              Result:
              Code:
              string(10) "10.12.2012"
              Bei Risiken ( Fragen ) oder Nebenwirkungen ( Fehler ) fragen sie Ihren Arzt ( PHP Handbuch ) oder Apotheker ( mich ).
              [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


              • #22
                112 wäre 11.2. - die ersten beiden sind immer Tage. Natürlich könnte ich auch dreistelliges nicht erlauben, also nur 1002 1512 0101 etc.. Das ist ja nur wie man es für sich definiert.
                Genau. Deshalb ist Dein Format/Deine Idee auch Müll. Oder willst Du unter die Eingabe eine 20-zeilige Bedienungsanleitung schreiben?
                Code:
                // Annahme heute ist 03.07.2012
                    1          -> 01.07.2012
                    01         -> 01.07.2012
                    11         -> 11.07.2012
                    111        -> 11.01.2012
                    1101       -> 11.01.2012
                    1.1.       -> 01.01.2012
                    1.12.      -> 01.12.2012
                    110112     -> 11.01.2012
                Alles was hinten steht, ist einem wohldefinierten, lokal bekannten Format angegeben, vorne steht einfach nur unübersichtlicher, mehrdeutiger Mist. Keinen Benutzer wird es wohl überfordnern, zusätzlich noch den Monat anzugeben und ein paar Punkte zu benutzen.
                "einfache" Datumseingaben
                "Einfach" bedeutet nicht nur schnell, sondern auch unmißverständlich und eingabetolerant.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #23
                  Ok, ist (d)eine Meinung ich habe eine andere.

                  Wenn Du mehrmals hintereinander Datums (Daten) eingeben musstest, wirst auch Du froh sein wenn Du schnell am Nummernblock mal 1005 zB für den 10.05. angeben kannst ohne zur Maus zu grefen um den DatePicker zu bemühen oder mit der anderen Hand noch schnell den Punkt auf der Tastatur zu finden.

                  Stell Dir vor Du bis Buchhalter und musst in einem Web-Interface Stapel buchen und wirst ev. noch danach bezahlt...

                  Wie gesagt, das ist meine Meinung, auch wenn Deine abweicht.

                  Und das....

                  Oder willst Du unter die Eingabe eine 20-zeilige Bedienungsanleitung schreiben?
                  ... ist echt nicht nötig, das versteht /ergibt sich von selbst (bzw. per Hausverstand) wenn man einmal dahinter gekommen ist das 1005 der 10.05. des aktuellen Jahr ist oder wenn ich 1 angebe das das dann der erste des aktuellen Monat ist.

                  Die verschiedenen Varianten hab ich deshabl im Detail so angegeben, weil man bei solchen Spielerein klare Grenzen setzen muss, und daher muss auch genau definiert sein wie weit das geht.
                  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


                  • #24
                    Ob 202 nun der 20.2 oder 2.2. ist, und 22 nun der 22. Juli oder der 2.2. ist mit nichten "Hausverstand" wenn gleichzeitig 2 für den 2.Juli steht, sondern einfach nur sinnlose Überoptimierung. Zumal der Geschwindigkeitsvorteil dann schwindet, wenn man überlegen muss, welches Format nun das richtige ist. Wenn Du eindeutige Eingaben willst benutze mehrere Felder. Dann muss man zwar tabben, der Rest kann aber reingehämmert werden. Leer übertabbte Felder könnte man mit JS auf den aktuellen Zeitkontext auffüllen.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #25
                      Hm, also wenn ihr da wirklich die Möglichkeit von Missverstänissen seht, dann werd ich jedenfalls mal die Eingabevarianten reduzieren (zB 3stelliges weg), also nur mehr 0107, 010712 oder 100513. Also nur ohne Punkte und Jahr optional (2stellig). Und das natürlich nur als Mögliche Variante. Natürlich darf/kann man das volle Datum erfassen, das war/ist immer so, das wäre nur als Alternative Eingabemöglichkeit.

                      Ansonsten ... tabben und JS.. ja, wäre auch eine Möglichkeit.. Aber nachdem das Projekt hier privater "Fun-Natur im mehr oder weniger Bekanntenkreis" ist muss ich sagen ich überschlag mich deshlab nicht


                      Aber was anderes:

                      Warum konvertiert PHP bei Test 1 den 32.05. zum 01.06. und gibt im DateTime Object keinen Fehler aus, beim zweiten - mit Jahresangabe - hingegen schon? Das Eingabeformat ist bei beiden das entsprechend korrekt.

                      PHP-Code:
                      ########
                      # Test 1
                      ########

                      $cur1 date_create_from_format('dm''3205', new DateTimeZone('GMT'));
                      var_dump$cur1 );
                      echo 
                      "<hr />";
                      var_dump$cur1->getLastErrors() );

                      // Output

                      object(DateTime)[1]
                        public 
                      'date' => string '2012-06-01 18:01:30' (length=19)
                        public 
                      'timezone_type' => int 3
                        
                      public 'timezone' => string 'UTC' (length=3)
                      -------------------------------------------------------------
                      array
                        
                      'warning_count' => int 0
                        
                      'warnings' => 
                          array
                            empty
                        
                      'error_count' => int 0
                        
                      'errors' => 
                          array
                            empty 
                      PHP-Code:
                      ########
                      # Test 2
                      ########

                      $cur2 date_create_from_format('dmy''320512', new DateTimeZone('GMT'));
                      var_dump$cur2 );
                      echo 
                      "<hr />";
                      var_dump$cur2->getLastErrors() );

                      // Output

                      object(DateTime)[3]
                        public 
                      'date' => string '2012-06-01 18:01:30' (length=19)
                        public 
                      'timezone_type' => int 3
                        
                      public 'timezone' => string 'UTC' (length=3)
                      -------------------------------------------------------------
                      array
                        
                      'warning_count' => int 1
                        
                      'warnings' => 
                          array
                            
                      => string 'The parsed date was invalid' (length=27)
                        
                      'error_count' => int 0
                        
                      'errors' => 
                          array
                            empty 
                      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


                      • #26
                        Wogegen soll er ein unvollständiges Datum denn prüfen?
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #27
                          -> es gibt nie nimmer einen 32.05., dafür ist kein Jahr nötig.
                          -> php "weiß" das auch, denn ich erhalte ja den 01.06. zurück, was ja dann wieder 31.05. + 1 = 32.05. wäre.

                          => Zu "menschlich" gedacht?
                          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


                          • #28
                            Gegenbeispiel: Es gibt „manchmal“ einen 29.2. -> Wie soll Dir PHP denn da ohne Jahresbezug antworten? Fehler melden? Keinen Fehler melden (was dann ja gleichbedeutend ist mit „Eingabe ist valide“?
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #29
                              Ja, jetzt hab ich es, konnte Deine Aussage hier nachstellen.

                              Wenn kein vollständiges Datum angegeben wird, errechnet PHP zuerst eines und validiert das dann - und das errechnete ist dann immer korrekt -> 32.05. wird zu 01.06.2012 das ist korrekt. Wenn ich nur mit 29. eine DT-Objekt erzeuge wird daraus 29.07.2012, was auch korrekt ist.

                              Is jetzt klar, danke.
                              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


                              • #30
                                Dieses Jahr ist ja auch ein Schaltjahr.
                                [COLOR="#F5F5FF"]--[/COLOR]
                                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                                [COLOR="#F5F5FF"]
                                --[/COLOR]

                                Kommentar

                                Lädt...
                                X