我正在尝试将时间与当前时间进行比较,并且现在已经多次尝试失败。
我试过比较
日期('U')到'08:00',
time()到'08:00',
日期('H:i')到'08:00'
strrotime('08:00')到time()或date('U')
并在我最近的尝试中,尝试比较 strrotime('08:00'。':00')到时间()或日期('U')
如果我将我的值保留为'08:00',我会收到一个错误,它无法转换为时间,如果我尝试使用strtotime,我会收到一个错误,它预计会出现一个参数字符串而不是像我这样的日期对象传递...我没有传递任何对象,只是一个包含字符串'08:00'...
的变量我最近尝试的代码:
if ($sleepSettings <> null) {
if (is_array($sleepSettings)) {
$containerHelper[$c->getId()]['wakeup'] = $sleepSettings['wakeup_s'];
$containerHelper[$c->getId()]['sleep'] = $sleepSettings['sleep_s'];
if (strtotime($sleepSettings['wakeup'] . ':00') < time() && time() < strtotime($sleepSettings['sleep'] . ':00')) {
$containerHelper[$c->getId()]['asleep'] = false;
} else {
$containerHelper[$c->getId()]['asleep'] = true;
}
}
}
答案 0 :(得分:0)
strtotime
想要转换为unix时间戳,其中包括日期和时间。
您要做的只是将当前时间与当时时间进行比较?
<?php
$nowTime = date('H:i');
var_dump($sleepSettings['wakeup'].':00' == $nowTime);
// Should be a boolean either true or false.
您可以比较两个字符串。
事实上,如果您只是尝试按小时(因为您要添加:00
),则可以使用date('H')
而不是添加':00'
。
答案 1 :(得分:0)
看起来你想比较日期的时间部分。 time()函数将返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数,其中包括当天,因此从您的代码中您将字符串'08:00'与1月1日的秒数进行比较1970。
如果您只想比较日期的时间部分,请将所有内容转换为分钟。例如:
$wake_hour = 8;
$wake_mim = 0;
$wake_total = ($wake_hour * 60) + $wake_mim;
$sleep_hour = 10;
$sleep_mim = 0;
$sleep_total = ($sleep_hour * 60) + $sleep_mim;
$now_hour = date('H');
$now_mim = date('i');
$now_total = ($now_hour * 60) + $now_mim;
if ($now_total > $wake_total && $now_total < $sleep_total) {
echo 'Wake up and conquer the world!!!';
}
答案 2 :(得分:0)
如果你想看看当前时间在唤醒和睡眠时间之间,杰西卡的回答是不行的。假设$ wakeup_time类似'07:00'而且$ bed_time类似于'23:00',你会想要将它们应用到任何一天,因此与time()相比将无效。您需要获得$ timeNow并分别比较小时和分钟。类似的东西:
$wakeup_time = explode(':', $wakeup_time);
$bed_time = explode(':', $bed_time);
$timeNow = array(date('H'), date('i'));
// the three times are separate hour and minute elements
if (($timeNow[0] == $wakeup_time[0] && $timeNow[1] >= $wakeup_time[1] ||
$timeNow[0] > $wakeup_time[0] ) &&
($timeNow[0] == $bed_time[0] && $timeNow[1] < $bed_time[1] ||
$timeNow[0] < $bed_time[0]) ) {
// awake
} else {
// asleep
}
这是一种方式。您还可以使用今天的日期合成唤醒和睡觉时间的时间():
$wakeup_timestamp = strtotime(date('Y-M-d ').$wakeup_time);
$bed_timestamp = strtotime(date('Y-M-d ').$bed_time);
if (time() >= $wakeup_timestamp && time() < $bed_timestamp) {
// awake
} else {
// asleep
}