PHP时间戳仅显示小时

PHP时间戳仅显示小时,php,Php,我正在使用时间戳来确定两个人是否在同一时间段在线,以下是我的UTC时间戳仅供参考: date_default_timezone_set('UTC'); $utc12am = 1380585600; $utc1am = 1380589200; $utc2am = 1380592800; $utc3am = 1380596400; $utc4am = 1380600000; $utc5am = 1380603600; $utc6am = 1380607200; $utc7am = 138061080

我正在使用时间戳来确定两个人是否在同一时间段在线,以下是我的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之间,这是在倒退,这会抛出整个代码。我该如何写一个时间戳来定义小时,而不是一天,或者我该如何处理这个问题?我的脑子着火了

更新

在经历了许多头痛之后,答案比需要的要简单,所有日期都是静态的,所以动态获取它们不是我计划要做的,我只使用date函数,所以我不必为每个时区写出新的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';

只需将小时值从0保存到23即可。
例如,15是下午3点。

时间戳存储自Unix纪元1970年1月1日00:00:00 GMT以来经过的秒数

这意味着你可以从中得到你想要的任何东西——天、月、小时等等,只要你从那个时代算起几秒钟。谢天谢地,Php让我们很容易做到这一点

这是时间戳中24小时格式的当前小时

$hour=dateG,1380621600

这意味着从1380621600到1380621600+3599的所有时间戳都将返回上午10点,这应该是您要查找的

如果你想知道某人是否在上午10点到12点之间在线,那么你只需检查dateG是否在上午10点到12点之间

如果您想检查某人是否在2013年10月1日10点到12点之间在线,那么除了使用一些额外参数外,您还可以使用前面的方法来获得您想要的:

$year = date("Y", <timestamp>);  
$month = date("F", <timestamp>);  
$date = date("j", <timestamp>);
如果你喜欢冒险,也可以使用explode一步完成

$logged_in=dateY F j G

如果你想知道两个用户是否在同一时间在线,那么你可以对每个人的“在线时间”进行排序,然后使用我们现在可以计算出的时间对列表进行线性扫描,以找出重叠

参考资料:


为什么这很重要?如果你有UTC的用户在线时间,那么只需检查他们是否在一小时之内:ifabs$user1-$user2这是从上午12点到晚上10点,而不是晚上10点到中午12点。您好,虽然这是正确的,但这不是我要找的。在你的例子中,当有人从晚上9点搜索到凌晨2点时,所有这些都发生了变化,现在的值是21-2,这仍然是负值。我从来没有告诉过你减去小时。但是,如果第一个小时小于第二个小时,则只进行减法,否则在第二个小时的基础上加24,然后进行减法,这很简单。我也不知道你为什么要减去任何东西。你说你想知道人们是否在同一时间在线,计算他们在线的时间,我已经在上面解释过了。你的问题似乎不是问你在找什么。许多人已经帮助你找出了如何根据你的标题从时间戳中获取小时,我告诉过你,你需要对每个人设置为在线时间的时间进行线性扫描,以确定他们是否在同一时间段在线。你,出于某种原因,在每个人的回答中减去小时,然后告诉他们你想要别的东西。下定决心,写出适当的问题。我看不懂人的心思。另外,根据你问的问题,把别人的答案标记为正确。不是基于你想问但没有问的问题。我想你根本不明白,我说的是21比2,不是21减2,为什么你认为我会在这个例子中减法,我不知道。你可以阅读我在我的问题上添加的内容,我在寻找什么,你去别的地方受点伤怎么样?火焰是不必要的。