在这两种情况下,我都可以从字符串中创建一个日期对象,如下所示:
$dt = strtotime("2013-04-19 17:00:00");
//or
$dt = strtotime("10 hours");
我需要一种方法来区分这两种日期类型,无论是相对数据字符串还是绝对数据字符串。
请问有什么可能的解决方案或线索吗?谢谢。
目前尚不清楚您想要什么,但如果该strtotime()
函数没有帮助,一个简单的正则表达式可以工作:
$regex = "/^\d{1,2} hours$/";
$type = (preg_match($dt, $regex) ? "relative" : "absolute");
刚刚把它从我的脑海中浮出水面,它可以改进得更好((hours|minutes|seconds)
或其他东西)。
还值得注意的是,这种定制是典型的糟糕设计。 strtotime()
听起来是正确的答案。
您可以将 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
将根据 now 的值而有所不同