我正在使用时间戳来确定两个人是否在同一时间段内在线,这是我的 UTC 时间戳仅供参考:
date_default_timezone_set('UTC');
$utc12am = 1380585600;
$utc1am = 1380589200;
$utc2am = 1380592800;
$utc3am = 1380596400;
$utc4am = 1380600000;
$utc5am = 1380603600;
$utc6am = 1380607200;
$utc7am = 1380610800;
$utc8am = 1380614400;
$utc9am = 1380618000;
$utc10am = 1380621600;
$utc11am = 1380625200;
$utc12pm = 1380628800;
$utc1pm = 1380632400;
$utc2pm = 1380636000;
$utc3pm = 1380639600;
$utc4pm = 1380643200;
$utc5pm = 1380646800;
$utc6pm = 1380650400;
$utc7pm = 1380654000;
$utc8pm = 1380657600;
$utc9pm = 1380661200;
$utc10pm = 1380664800;
$utc11pm = 1380668400;
我遇到的问题是,如果有人说他们在晚上 10 点到凌晨 12 点之间在线,这就像说在 1380668400 和 1380585600 之间它会倒退,这会抛出整个代码。我将如何编写一个仅定义小时而不是日期的时间戳,或者我将如何解决这个问题?我的大脑着火了。
更新
经过很多头痛之后,答案比它需要的要简单,所有日期都是静态的,所以动态抓取它们不是我打算做的,我只使用日期函数,所以我不必写出新的 UTC 值每个时区。无论如何,我画了一张图,这对我很有帮助,你只需要检查 $max 是否在 $mina - $maxa 的范围内,或者 $min 是否在 $mina - $maxa 的范围内。我不敢相信这花了我这么长时间
$blend = 'False';
if((($maxa > $min) And ($maxa < $max)) Or (($mina > $min) And ($mina < $max))) {
$blend = 'True';
}
if($min > $max) {
if(($mina > $min) Or ($mina < $max)) {
$blend = 'True';
}
if(($maxa > $min) Or ($maxa < $max)) {
$blend = 'True';
}
}
if($min === $max) $blend = 'True';