duanbenzan4050 2015-07-29 15:36
浏览 27
已采纳

PHP字符串格式的日期时间操作

I have several shops in my system. Now i online want to show shops that are open or will open if the nowtime is before the closing time. the time strings I use are 24 hour format like "01:00" and "23:22" I came up with a code like this:

    public function willOpen($open, $closed, $nowTime) {
    $open = str_replace(":", "", $open);
    $closed = str_replace(":", "", $closed);
    $nowTime = str_replace(":", "", $nowTime);
    if ($open >= $nowTime) {
        if ($closed <= $nowTime) {
            return false;
        } else {
            return true;
        }
    }
    return false;
}

But this does not seem right because if the close time is for ex. 01:00 and the current time is 9:00 and the shop will open for ex 11:00 then this code will return false because the close time is smaler then the now time.....

what is the best approach do to this ?

  • 写回答

2条回答 默认 最新

  • dongrou5254 2015-07-29 15:54
    关注

    The best way to go is using DateTime classes, as time operations is supported. So it's would be something like this:

    function willOpen(Datetime $open, Datetime $closed)
    {
        $nowTime = new DateTime(); # defaults to now 
    
        // if ($nowTime > $closed) ...
    }
    
    $open   = Datetime::createFromFormat('H:i', '01:00');
    $closed = Datetime::createFromFormat('H:i', '09:00');
    

    If closed is the next day so you could a bit like:

    $closed->add(new DateInterval('P1DT12H')); # 1 day + 12 hours
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型