| | |
| | | */ |
| | | public static function strtotime($date) |
| | | { |
| | | $date = trim($date); |
| | | |
| | | // check for MS Outlook vCard date format YYYYMMDD |
| | | if (preg_match('/^([12][90]\d\d)([01]\d)(\d\d)$/', trim($date), $matches)) { |
| | | return mktime(0,0,0, intval($matches[2]), intval($matches[3]), intval($matches[1])); |
| | | if (preg_match('/^([12][90]\d\d)([01]\d)([0123]\d)$/', $date, $m)) { |
| | | return mktime(0,0,0, intval($m[2]), intval($m[3]), intval($m[1])); |
| | | } |
| | | else if (is_numeric($date)) { |
| | | |
| | | // common little-endian formats, e.g. dd/mm/yyyy (not all are supported by strtotime) |
| | | if (preg_match('/^(\d{1,2})[.\/-](\d{1,2})[.\/-](\d{4})$/', $date, $m) |
| | | && $m[1] > 0 && $m[1] <= 31 && $m[2] > 0 && $m[2] <= 12 && $m[3] >= 1970 |
| | | ) { |
| | | return mktime(0,0,0, intval($m[2]), intval($m[1]), intval($m[3])); |
| | | } |
| | | |
| | | // unix timestamp |
| | | if (is_numeric($date)) { |
| | | return (int) $date; |
| | | } |
| | | |
| | |
| | | return (int) $ts; |
| | | } |
| | | |
| | | /** |
| | | * Date parsing function that turns the given value into a DateTime object |
| | | * |
| | | * @param string $date Date string |
| | | * |
| | | * @return object DateTime instance or false on failure |
| | | */ |
| | | public static function anytodatetime($date) |
| | | { |
| | | if (is_object($date) && is_a($date, 'DateTime')) { |
| | | return $date; |
| | | } |
| | | |
| | | $dt = false; |
| | | $date = trim($date); |
| | | |
| | | // try to parse string with DateTime first |
| | | if (!empty($date)) { |
| | | try { |
| | | $dt = new DateTime($date); |
| | | } |
| | | catch (Exception $e) { |
| | | // ignore |
| | | } |
| | | } |
| | | |
| | | // try our advanced strtotime() method |
| | | if (!$dt && ($timestamp = self::strtotime($date))) { |
| | | try { |
| | | $dt = new DateTime("@".$timestamp); |
| | | } |
| | | catch (Exception $e) { |
| | | // ignore |
| | | } |
| | | } |
| | | |
| | | return $dt; |
| | | } |
| | | |
| | | /* |
| | | * Idn_to_ascii wrapper. |