2

在这两种情况下,我都可以从字符串中创建一个日期对象,如下所示:

$dt = strtotime("2013-04-19 17:00:00");
//or
$dt = strtotime("10 hours");

我需要一种方法来区分这两种日期类型,无论是相对数据字符串还是绝对数据字符串。

请问有什么可能的解决方案或线索吗?谢谢。

4

2 回答 2

4

目前尚不清楚您想要什么,但如果该strtotime()函数没有帮助,一个简单的正则表达式可以工作:

$regex = "/^\d{1,2} hours$/";

$type = (preg_match($dt, $regex) ? "relative" : "absolute");

刚刚把它从我的脑海中浮出水面,它可以改进得更好((hours|minutes|seconds)或其他东西)。

还值得注意的是,这种定制是典型的糟糕设计。 strtotime()听起来是正确的答案。

于 2013-06-03T05:08:45.097 回答
4

您可以将 strtotime 与不同的第二个参数一起使用。

if(strtotime($val) == strtotime($val, 0)){
   //date is absolute
} else {
   // date is relative
}

2013-04-19 17:00:002013-04-19 17:00:00无论开始时间是什么时候,都将始终如此。

的结果10 hours将根据 now 的值而有所不同

于 2013-06-03T05:16:23.010 回答