当前时间在用户元数据数据库时间之外时运行函数

时间:2018-12-03 06:57:40

标签: php datetime comparison

我有一个有点复杂的时间方程式,这让我很沮丧!

到目前为止,我有:

$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任务为真,我打算让这些功能运行

1 个答案:

答案 0 :(得分:0)

只需使用date_default_timezone_setstrtotime来获取您的时间戳记值,它们将处于同一时区,因此可以直接进行比较。请注意,您的条件应使用||(或)而不是&&(和)来检查时间是否超出用户时间。

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
}