我正在编写一个函数,确定时间是否在一个工作日的上午9点到下午5点之间。然后根据今天的营业时间是否已经结束或者(如果在午夜之后)即将开始,它会告诉您下一个工作日的开始时间(如果当前是非工作时间)。
到目前为止,一切进展顺利,并创建了我可以使用strtotime()
的最易读的代码 - 但是如何测试strtotime()
?
有没有办法暂时改变系统时间以进行测试?
答案 0 :(得分:3)
只需使用strtotime()
的可选第二个参数,即可为其提供特定的时间戳。如果您不提供第二个参数,则使用当前时间。
答案 1 :(得分:1)
strtotime接受第二个参数,将时间设置为您想要的而不是当前时间
int strtotime(string $ time [,int $ now])
$ time是模仿的格式
$ now是从
生成日期的时间戳如果现在提供它会覆盖当前时间。
e.g。无论程序在什么时间运行,都要在3月30日星期一下午6点进行测试
$format = '2009-03-30 18:00'
$timestamp = mktime(18,0,0,3,30,2009);
strtotime($format,$timestamp);
答案 2 :(得分:1)
查看this page,这就是您所需要的一切。 :)
答案 3 :(得分:1)
要测试strtotime,您可以使用http://www.teststrtotime.com(按回车键提交表单,按钮现在似乎已断开)。
答案 4 :(得分:0)
为什么不只是一个具有strtotime()输入值数组的单元测试?
...
test( strtotime("now") );
test( strtotime("10 September 2000") );
test( strtotime("+1 day") );
test( strtotime("+1 week") );
test( strtotime("+1 week 2 days 4 hours 2 seconds") );
test( strtotime("next Thursday") );
test( strtotime("last Monday") );
答案 5 :(得分:0)
你甚至不需要为strtotime();
使用第二个参数// $now = time( ); // use this once testing is finished
$now = strtotime( '03/15/2009 14:53:09' ); // comment this line once testing is complete
testTime( $now );