Tools\Utility\Time::parseLocalDate PHP Method

parseLocalDate() public static method

Parse 2022-11-12 or 12.11.2022 or even 12.11.22
public static parseLocalDate ( string $date, array $allowed = ['.', '-'] ) : integer
$date string
$allowed array
return integer Seconds
    public static function parseLocalDate($date, array $allowed = ['.', '-'])
    {
        $datePieces = explode(' ', $date, 2);
        $date = array_shift($datePieces);
        if (strpos($date, '.') !== false) {
            $pieces = explode('.', $date);
            $year = $pieces[2];
            if (strlen($year) === 2) {
                if ($year < 50) {
                    $year = '20' . $year;
                } else {
                    $year = '19' . $year;
                }
            }
            $date = mktime(0, 0, 0, $pieces[1], $pieces[0], $year);
        } elseif (strpos($date, '-') !== false) {
            //$pieces = explode('-', $date);
            $date = strtotime($date);
        } else {
            return 0;
        }
        return $date;
    }

Usage Example

コード例 #1
0
ファイル: TimeTest.php プロジェクト: alescx/cakephp-tools
 /**
  * TimeTest::testParseDate()
  *
  * @return void
  */
 public function testParseLocalDate()
 {
     //echo $this->_header(__FUNCTION__);
     $tests = ['2010-12-11' => 1292022000, '2010-01-02' => 1262386800, '10-01-02' => 1262386800, '2.1.2010' => 1262386800, '2.1.10' => 1262386800, '02.01.10' => 1262386800, '02.01.2010' => 1262386800, '02.01.2010 22:11' => 1262386800, '2010-01-02 22:11' => 1262386800];
     foreach ($tests as $was => $expected) {
         $is = $this->Time->parseLocalDate($was);
         $this->assertTrue($is <= $expected + HOUR && $is >= $expected);
     }
 }