我有一个有点复杂的时间方程式,这让我很沮丧!
到目前为止,我有:
$current = time(); // UTC time
$user_in = '8:00 am'; // local time
$user_out = '4:00 pm'; // local time
$gmt_off = '11'; // Australia EST (+1 at the moment)
然后我具有通过减去GMT偏移量将本地时间转换为UTC并将其输出为g:i a
function utc( $time ) {
$time = ( empty($time) ? null : strtotime($time) );
$gmt = '60 * 60 * 11'; // there is an actual check for it to be 10 or 11 - and in seconds
$out = ( $time - $gmt );
$out = date( 'Y-m-d g:i a', $out );
return $out;
}
我不知道如何正确配置条件以检查当前时间是否在$user
时间之外
$user_in_utc = utc( $user_in );
$user_out_utc = utc( $user_out );
if( $current < $user_in_utc && $current > $user_out_utc ) {
// do something
}
但是,我遇到的问题是当前时间是当地时间6:00 pm。
当我一直说日期是今天而不是明天时,我如何检查它现在小于$user_out
?
如果该语句作为cron任务为真,我打算让这些功能运行
答案 0 :(得分:0)
只需使用date_default_timezone_set
和strtotime
来获取您的时间戳记值,它们将处于同一时区,因此可以直接进行比较。请注意,您的条件应使用||
(或)而不是&&
(和)来检查时间是否超出用户时间。
date_default_timezone_set('Australia/Sydney');
$current = strtotime('now');
$user_in = strtotime('8:00 am');
$user_out = strtotime('4:00 pm');
if( $current < $user_in || $current > $user_out ) {
// do something
}