PHP дата строки в метку времени - inverse_date () - PullRequest
0 голосов
/ 27 марта 2012

Я ищу функцию, которая выполняет обратную дату (). Значение:

$timestamp = inverse_date($format_string, $date_string);
$d = date($format_string, $timestamp);
if ($d === $date_string) {
    echo 'This is what I want';
}

Проблемы, с которыми я столкнулся до сих пор:

strtotime - угадывает формат, поэтому он может не подходить для всех форматов

strptime - использует форматирование strftime, отличное от

даты

РЕШЕНИЕ:

function inverse_date($format_string, $date_string) {
    $dateTime = date_create_from_format($format_string, $date_string);
    $value_ts = date_format($dateTime, 'U');
    return $value_ts;
}

Спасибо Till Helge Helwig за ссылку.

Ответы [ 2 ]

0 голосов
/ 03 мая 2012
function inverse_date($format_string, $date_string) {
    $dateTime = date_create_from_format($format_string, $date_string);
    $value_ts = date_format($dateTime, 'U');
    return $value_ts;
}
0 голосов
/ 27 марта 2012

Ниже PHP5.3 ваша лучшая ставка - strtotime().Он очень хорошо угадывает время

используйте mktime() Документ здесь Если у вас есть дата и вы знаете, как она отформатирована, просто поиграйте с explode(), вам придется предварительно установитьожидаемые форматы:

Пример:

define('DMY4', 'dd-mm-yyyy');
// Other similar defines with all formats expected

function inverse_date($format_string, $date_string) {
    $d = 0;
    $m = 0;
    $y = 0;
    $h = 0;
    $i = 0;
    $s = 0;
    switch ($format_string) {
            case DMY4:
                list($d, $m, $y) = explode('-', $date_string);
                break;
            // etc...
    }
    $time = mktime($h, $m, $s, $m, $d, $y);
}
...