我使用strtotime获得一些相对的时间戳,使用字符串描述向前或向后移动的时间,即"+1小时,15分钟“,"-2小时,45分钟”。
这是非常有效的:
$ds = strtotime('02/20/11 09:30:00 -1 hour');然而,如果是"-1小时,15分钟“,strtotime似乎是在减去该小时,然后再加上这15分钟。
我试过用逗号:http://codepad.org/3dq7c2GM
我来到这里,看到了一个关于这个的前一个问题,没有逗号就试了一下:http://codepad.org/G8gm8E84
还是没有运气。我尝试使用相对参数:http://codepad.org/nwZ9ZqOv Nothing。
我找到了我自己的解决方案,这是非常不直观的,我不确定我是否遗漏了什么,甚至可能是错误地处理了这个问题。工作版本的最终结果是:
$ds = strtotime('02/20/11 09:30:00 -1 hour -15 minutes');http://codepad.org/O89S3mCj
我是不是漏掉了什么?在文档中没有提到这种行为。另外,是否有更好的方法来使用基于字符串的持续时间来获得这样的相对时间戳?
编辑
编辑以添加这些字符串的来源-它们是通过AJAX从用户界面来的。有一些窗体控件具有+/-按钮,可使显示字段中的持续时间间隔增加/减少15分钟。当这些值发生变化时,AJAX请求将这些值激发到服务器,通过strtotime将其转换为划时代的时间戳,而后者又存储在数据库中。
发布于 2011-02-17 15:52:03
我以前从未观察过这种行为,但可能是因为我总是把时间间隔转换成几分钟。也就是说,
$ds = strtotime('02/20/11 09:30:00 -75 minutes');发布于 2011-02-17 15:53:14
你的时间是从哪里来的,或者你以后在哪里使用它?如果涉及到一些MySQL数据操作,您可能可以使用该操作。
发布于 2011-02-17 15:54:49
这很有道理--毕竟它是一个翻译。
<?php
$ds = strtotime('02/20/11 09:30:00 -1 hour, 15 minutes');
echo $ds."\n";
echo date('m/d/Y h:i:s a', $ds)."\n";
?>如果15分钟变成负值(就像你所做的那样,它会按你的意愿去做)。
我绝不会亲自使用strtotime --我更喜欢从时代开始就用几秒钟:-)
https://stackoverflow.com/questions/5031221
复制相似问题