PHP日期时间字符串微分

PHP日期时间字符串微分,php,datetime,Php,Datetime,在这两种情况下,我都可以从字符串创建日期对象,如下所示: $dt = strtotime("2013-04-19 17:00:00"); //or $dt = strtotime("10 hours"); 我需要一种方法来区分这两种日期类型,是相对的还是绝对的数据字符串 有什么可能的解决办法或线索吗?谢谢。不清楚您想要什么,但是如果strotime()函数没有帮助,一个简单的正则表达式可以工作: $regex = "/^\d{1,2} hours$/"; $type = (preg_matc

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

$dt = strtotime("2013-04-19 17:00:00");
//or
$dt = strtotime("10 hours");
我需要一种方法来区分这两种日期类型,是相对的还是绝对的数据字符串


有什么可能的解决办法或线索吗?谢谢。

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

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

$type = (preg_match($dt, $regex) ? "relative" : "absolute");
只要把它从我的头顶上取下来,就可以做得更好(
(小时|分钟|秒)
或者别的什么)


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

您可以使用具有不同秒参数的strotime

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小时
的结果会有所不同,这取决于now的值是多少

,您可以使用一些正则表达式来区分使用正则表达式所需的两个不同的输入值。我的印象是@Rana在使用
strotime()。。。(这可能是不可能的)谢谢史蒂夫的线索。然而,最后我使用正则表达式来匹配日期,而不是像“/(\d{2,4})-(\d*)-(\d{2})/”这样的时间,并且似乎它正在工作。嗨,这只是另一个问题。如果我使用strotime(“16:00:00”,0),它的结果是1970年的16:00:00,自然,“16:00:00”应该意味着绝对时间,今天的时间,对吗?你有什么建议可以从中恢复过来吗?谢谢。0,因为第二个参数是unix历元(1969年12月31日12:00),如果您想要与今天相关的日期,那么只需省略最后一个参数`标准时间(“16:00:00”);对于给定的解决方案,我想我需要使用这两种方法并比较它们,对吗?我的意思是,如果$val是“16:00:00”,那么上面的比较将导致“相对”条件块。但对于这样的时间,我希望它是绝对时间块,但它肯定会像以前一样工作“10个小时”。请让我知道我是否可以解释,或者如果你还没有理解这个问题,我也可以给你举个例子。