PHP普遍将时间转换为用户首选项

时间:2013-09-30 20:25:06

标签: php

首先,我有一张如图所示的栏目:
http://i.imgur.com/yYpxl3S.png

用户在注册时选择他们的时区。我将如何根据用户解释时间?在这种情况下,我希望用户能够定义他们希望人们何时活动,因此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点重叠

1 个答案:

答案 0 :(得分:1)

请参阅Daylight saving time and time zone best practices

底线:在内部存储UTC时间戳,将所有用户输入转换为其首选时区。这就是它。