【问题标题】:PHP universally convert time to users preference [duplicate]PHP普遍将时间转换为用户偏好[重复]
【发布时间】:2013-10-06 20:17:11
【问题描述】:

首先,我有一个如图所示的列:

用户在注册时选择他们的时区。我将如何根据用户解释时间?在这种情况下,我希望用户能够定义他们希望人们何时处于活动状态,因此 IE Bob 想要搜索从上午 9 点到下午 12 点处于活动状态的用户。我需要在数据库中插入哪些时间戳,以便用户可以通过这种方式进行搜索?

更新

我还在询问如何准确查找一个时间是否与另一个时间重叠,但是跨时间格式对此至关重要。我将包含这段代码 sn-p,说明我如何发现时间是否重叠。也感谢 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 点重叠

【问题讨论】:

标签: php


【解决方案1】:

Daylight saving time and time zone best practices

底线:在内部存储 UTC 时间戳,将所有用户输入从他们的首选时区转换为他们的首选时区。差不多就这些了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多