亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 PHP 中按時間間隔顯示列表

如何在 PHP 中按時間間隔顯示列表

PHP
智慧大石 2023-09-22 17:43:24
如何在 PHP 中按時間間隔顯示列表例如:特定日期的 00: 00 至 15: 30。我這樣嘗試:我在同一天從00:00開始花了15小時30分鐘。這個想法是顯示這些時間之間的列表。我有什么錯嗎?$todayMidday = new \DateTime('now');$todayMidday->sub(new \DateInterval('PT15H30M'));return $this->createQueryBuilder('b')    ->andWhere('b.reservationDate <= :today')    ->andWhere('b.reservationDate >= :today')    ->orderBy('b.hours', $order)    ->setParameter('today', $todayMidday->format('Y-m-d'))    ->setMaxResults($limit)    ->getQuery()    ->getResult();
查看完整描述

1 回答

?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

您的代碼有很多問題。因為你是新人,所以我會盡力提供幫助。我不知道為什么這個問題被標記下來。到目前為止的兩條評論與您的問題并不真正相關。


這里的一個問題是在 \DateTime 中使用“sub”,而且事實上你只有 1 個 \DateTime 對象。最后,當您查詢數據庫時,您完全節省了時間。


“sub”函數從日期中減去間隔。所以你的代碼所說的是:“獲取當前日期和時間,然后從中減去 15 小時 30 分鐘,現在選擇所有小于或等于和大于或等于今天日期的記錄(忽略時間)”


您想要的是有 2 個 \DateTime 對象,一個用于結束時間,一個用于開始時間。例如:


//get the current date time

$timeFrom = new \DateTime();

//now set the time to 00:00

$timeFrom->setTime(0,0,0);


//get the current date time

$timeTo = new \DateTime();

//now set the time to 00:00

$timeTo->setTime(15,30,0);


return $this->createQueryBuilder('b')

    ->andWhere('b.reservationDate <= :timeTo')

    ->andWhere('b.reservationDate >= :timeFrom')

    ->orderBy('b.hours', $order)

    ->setParameter('timeTo', $timeTo->format('Y-m-d H:i:s'))

    ->setParameter('timeFrom', $timeFrom->format('Y-m-d H:i:s'))

    ->setMaxResults($limit)

    ->getQuery()

    ->getResult();

當然有多種不同的方法來設置日期/時間,但要注意的關鍵點是 1 個 \DateTime 對象一次只能保存 1 個日期和時間。您可以按任意時間間隔更改該日期或時間,但它只會保留 1 個新時間。它沒有范圍。


查看完整回答
反對 回復 2023-09-22
  • 1 回答
  • 0 關注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號