我可以在两种情况下从字符串中创建日期对象,如下所示:
$dt = strtotime("2013-04-19 17:00:00");
//or
$dt = strtotime("10 hours");
我需要一种方法,以便区分这两种日期类型,无论是相对还是绝对数据字符串。
有任何可能的解决方案或线索吗?感谢。
答案 0 :(得分:4)
目前还不是很清楚你想要什么,但是如果strtotime()
函数无法帮助简单的正则表达式可以工作:
$regex = "/^\d{1,2} hours$/";
$type = (preg_match($dt, $regex) ? "relative" : "absolute");
只是让它脱离了我的头脑,它可以更精致((hours|minutes|seconds)
或其他东西)。
值得注意的是,这种定制是典型的糟糕设计。 strtotime()
听起来像是正确答案。
答案 1 :(得分:4)
您可以使用具有不同第二参数的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
的结果会有所不同,具体取决于现在的值是什么