在没有AM和PM的情况下从12小时时间推迟24小时的时间

时间:2010-11-10 01:44:32

标签: php time unix-timestamp

我正在开展一个项目,该项目屏幕上显示了网上发布的列车时刻表中的出发时间列表。我意识到如果我没有使用如此粗略的方法来访问数据但是没有可用的API会更容易,而且它更像是一个学习项目而不是我希望公开发布的那种东西。

无论如何,我正在阅读的时间表以12小时格式显示时间但没有AM / PM(例如,仅9:43)。我将时间存储在数据库中作为近似的unix时间戳,这意味着我需要我的脚本能够确定时间是AM还是PM。

我正在从列出的数据中列出可能在两小时前和未来六小时之间的数据。所以在上午9点脚本运行的时候,可能会列出即将到来的下午2点的火车,如果没有按时离开,早上7点的火车仍然可以登机。

我写了一个函数,它接受两个参数 - 要评估的小时,以及基于“猜测”的当前系统小时(我意识到我可以让函数获取时间本身,但我试图写一个单元测试失败了,这就是我这样做的原因)。我会在这里发布它,但它并没有真正起作用,我想从你们精彩的人那里获得一些指导或提示。

任何人都可以帮助我吗?有什么好办法来解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果你知道你什么时候刮了一页(你应该),并且你知道列出的时间(显然你这么做),你知道时间是-2到+6的页面访问(例如,你刮页的时间)......我没有看到问题出在哪里。看起来你有所需的所有信息。

我在11:30(AM)刮了一页。出发时间为2:15。那么,当在上午2:15到下午2:15之间选择时,在11:30(AM)之后不到6小时的两个中只有一个。如果我在10:30看到一个条目,我知道它必须是“一小时前”,因为未来11小时的到来将不会列出(根据您的解释)。

或者我错过了什么?

答案 1 :(得分:0)

传统上,火车时刻表区分上午和下午。光面和粗体时代。我记得最好,请注意。永远是大胆的。如果是您的来源的情况,只需跟踪文本是否在< b>内。或者< strong>。

答案 2 :(得分:0)

好的,我忘记了这个脚本运行初始化列车,因为提前几小时出现在车上,所以“2小时前”的事情不是问题。这是我想出来的,它似乎正在起作用:

 function convertTime($input, $currentHour) {
    if ($currentHour >= 8 && $currentHour < 12 && $input < 8) {
        $input += 12;
    }
    if ($currentHour > 12 && $currentHour < 20 && $input < 12) {
        $input += 12;
    }
    if ($currentHour > 20 && $currentHour < 24 && $input > 8) {
        $input +=12;
    }
$return $input;
}