首先,我有一个如图所示的列:
用户在注册时选择他们的时区。我将如何根据用户解释时间?在这种情况下,我希望用户能够定义他们希望人们何时活跃,因此 IE Bob 想要搜索从上午 9 点到下午 12 点活跃的用户。我需要在数据库中插入哪些时间戳,以便用户可以以这种方式进行搜索?
更新
我还问到底如何找到一个时间是否与另一个时间重叠,但是交叉时间格式对此至关重要。我将包含这段代码片段,说明我如何发现时间是否重叠。也感谢 Pekka 的正确答案。
<?php
date_default_timezone_set('UTC');
$min = strtotime('9am');
$max = strtotime('12pm');
echo $min. ',' .$max . '<br/>';
date_default_timezone_set('America/Chicago');
$mina = strtotime('11pm');
$maxa = strtotime('5am');
echo 'User plays between' . date("g:ia", $min) . ' and ' . date("g:ia", $max) . '<br />';
echo 'You play between' . date("g:ia", $mina) . ' and ' . date("g:ia", $maxa) . '<br />';
if((($mina >= $min) And ($mina <= $max)) Or (($maxa <= $max) And ($maxa >= $min))
Or (($min >= $mina) And ($min <= $maxa)) Or (($max <= $maxa) And ($max >= $mina))
) {
$blend = 'True';
} else {
$blend = 'False';
}
if($maxa === $min Or $mina === $max) $blend = 'False';
echo $blend;
?>
在此示例中,您将看到 UTC 时间上午 9 点至下午 12 点与美国/芝加哥时间上午 11 点至凌晨 5 点重叠