Я могу сделать объект даты из строки в обоих случаях, как показано ниже:
$dt = strtotime("2013-04-19 17:00:00"); //or $dt = strtotime("10 hours");
Мне нужен способ, чтобы я мог различать эти два типа даты, будь то относительная или абсолютная строка данных.
Любое возможное решение или подсказка, пожалуйста? Благодарю.
Вы можете использовать strtotime с разными вторыми параметрами.
if(strtotime($val) == strtotime($val, 0)){ //date is absolute } else { // date is relative }
2013-04-19 17:00:00
всегда будет 2013-04-19 17:00:00
независимо от времени начала.
результат 10 hours
будет отличаться в зависимости от того, какое значение теперь
Не совсем понятно, что вы хотите, но если strtotime()
не помогает простому регулярному выражению, может работать:
$regex = "/^\d{1,2} hours$/"; $type = (preg_match($dt, $regex) ? "relative" : "absolute");
Просто убрал его с головы, он мог быть усовершенствован намного лучше ( (hours|minutes|seconds)
или что-то в этом роде).
Также стоит отметить, что такая настройка типична для плохого дизайна. strtotime()
звучит как правильный ответ.