」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在 PHP 中處理時間格式時,如何避免意外結果?

在 PHP 中處理時間格式時,如何避免意外結果?

發佈於2024-11-19
瀏覽:973

When Handling Time Formats in PHP, How Can We Avoid Unexpected Results?

PHP 中的時間操作:從H:i 添加並減去30 分鐘

在PHP 中,處理與時間相關的任務對於各種任務至關重要應用程式。一種常見情況涉及修改格式為「H:i」的時間值。此格式表示以小時和分鐘為單位的時間,例如“10:00”或“13:30”。

要從這些值中加法或減去特定時間間隔,我們可以使用 strtotime() 和 date( ) 函數。但是,如果初始時間值未正確格式化為時間戳,則可能會出現一些意外行為。

讓我們考慮一個範例,我們的目標是建立兩個新值:$startTime 30 分鐘前$time 和$endTime 30 $time 後的分鐘數,其中$time 的格式為「H:i 」。

下面的程式碼片段最初看起來可能是合理的:

$startTime = date("H:i",strtotime('-30 minutes',$time));
$endTime = date("H:i",strtotime(' 30 minutes',$time));

但是,在將「10:00」作為$time 傳遞後,我們遇到了意想不到的結果:$startTime 變成“00:30”而不是預期的“09:30”,$endTime 變成“01:30”而不是“10:30”。

關鍵問題在於最初的假設 $time 是一個時間戳記。然而,它只是一個格式為“H:i”的字串。要解決這個問題,我們必須先使用 strtotime() 函數將 $time 轉換為時間戳記。

更正的程式碼:

$time = strtotime('10:00');
$startTime = date("H:i", strtotime('-30 minutes', $time));
$endTime = date("H:i", strtotime(' 30 minutes', $time));

現在,結果符合我們的預期:$startTime 變為“09:30”,$endTime變為“10:30”。透過確保 $time 從一開始就是一個時間戳,我們可以在 PHP 中執行準確的時間操作。

版本聲明 本文轉載於:1729223781如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 如何驗證 MySQLnd 是否是 PHP 中的活動驅動程式?
    如何驗證 MySQLnd 是否是 PHP 中的活動驅動程式?
    確認MySQLnd 作為活動驅動程式雖然phpinfo() 中存在MySQLnd 表明已安裝,但並不能保證它是主動驅動程式。為了明確確定 MySQLnd 是否可運行,需要額外的措施。 在 mysqli 中檢查 MySQLnd要確定 MySQLnd 在 mysqli 中的狀態,您可以使用 mysqli...
    程式設計 發佈於2024-11-19
  • 一個Java檔案可以包含多個類別嗎?
    一個Java檔案可以包含多個類別嗎?
    一個Java檔案可以包含多個類別嗎? 對於Java新手來說,常常會遇到一個Java檔案是否可以包含多個類別的問題出現。這個問題的答案是肯定的。然而,在這個單一文件中,只有一個類別可以擁有「公共頂級」類別的頭銜。此外,此公共頂級類別的名稱必須反映來源檔案本身的名稱。 一個文件中多個類別的好處在一個文件...
    程式設計 發佈於2024-11-19
  • 如何在 Java 正規表示式中轉義特殊字元:綜合指南
    如何在 Java 正規表示式中轉義特殊字元:綜合指南
    特殊字元的正規表示式轉義:綜合指南當使用Java 正規表示式來符合複雜的訊息範本和使用者輸入時,至關重要轉義特殊字元以確保準確匹配。本文將提供需要轉義的特殊字元的完整清單以及 Java 正規表示式中通用轉義的最佳實踐。 需要轉義的字元在Java 中,以下內容正規表示式中需要轉義的字元:\.[]{}(...
    程式設計 發佈於2024-11-19
  • 如何在 PHP 中使用複選框正確刪除多個資料庫行?
    如何在 PHP 中使用複選框正確刪除多個資料庫行?
    在PHP 中使用複選框協作刪除資料庫行面對從MySQL 堡壘中清除多行的任務,您已經在編碼智慧的深處尋求啟蒙。在著手進行資料清理工作時,您似乎遇到了難以克服的障礙。 您所寫的程式碼雖然意圖勇敢,但未能執行其行消滅的預期目的。決心克服這個障礙,您透過向受人尊敬的編碼社群展示您的程式碼來尋求指導:// ...
    程式設計 發佈於2024-11-19
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-19
  • PHP 字串可以多長?
    PHP 字串可以多長?
    PHP字串長度的界限是多少? 關於PHP中字串的長度限制,根據PHP版本有不同的條件和系統配置。 PHP 7.0.0 及更高版本(64 位元)在這些64 位元版本中,字串長度沒有特定限制,為儲存大量文字提供了巨大的容量。 PHP 5。 x 和更早版本在 PHP 7.0.0 之前和 32 位元版本中,...
    程式設計 發佈於2024-11-19
  • JSConf Chile 智利 JavaScript 社群不容錯過的活動
    JSConf Chile 智利 JavaScript 社群不容錯過的活動
    今年,JSConf Chile 2024 在第二版中強勢回歸,鞏固了自己作為智利 JavaScript 社區最重要活動之一的地位。這次會議以 1 天的研討會和 2 天的國際演講為形式,是向最優秀的專家學習、建立有價值的聯繫並成為不斷發展的 JavaScript 社群的一部分的獨特機會。 該活動將於...
    程式設計 發佈於2024-11-19
  • MySQL 中的貨幣值是否應該將 DOUBLE 轉換為 DECIMAL?
    MySQL 中的貨幣值是否應該將 DOUBLE 轉換為 DECIMAL?
    MySQL 中的DOUBLE 與DECIMAL:重新審視精度之爭在MySQL 資料庫中儲存貨幣值時應避免使用DOUBLE,這是一種常見的做法由於潛在的精度問題。然而,實際場景提出了關於此建議有效性的問題。 平衡精度問題與實際考慮給定的場景涉及一個遺留系統,其中有許多 DOUBLE 列,用於貨幣存儲。...
    程式設計 發佈於2024-11-19
  • 如何使用 CSS 過渡創建中心擴展 DIV?
    如何使用 CSS 過渡創建中心擴展 DIV?
    使用CSS 從中間擴展DIV在這個CSS 中間擴展問題中,我們的目標是將DIV 元素從中心向外轉換,實現與典型的從左上角展開的效果不同。利用CSS過渡,我們試圖控制擴展的寬度、高度和位置,以給人從中間開始增長的印象。 擴展的關鍵秘密在於操縱邊距屬性通過精確的公式。透過過渡邊距,我們可以指定圍繞 DI...
    程式設計 發佈於2024-11-19
  • 如何將資料分組到有意義的容器中以在 SQL 中進行直方圖視覺化?
    如何將資料分組到有意義的容器中以在 SQL 中進行直方圖視覺化?
    確定最佳直方圖箱大小在資料分析中,直方圖是直觀地表示資料分佈的重要工具。雖然可以使用腳本語言來產生直方圖,但這個過程可以直接在 SQL 中完成嗎?答案是肯定的,以下的問題將深入探討這個主題。 主要挑戰在於定義直方圖箱的大小。在大多數情況下,目標是將資料分組到預先定義的範圍中以獲得更豐富的資訊和更全面...
    程式設計 發佈於2024-11-19
  • Django 中的 Slug 是什麼以及為什麼要使用它們?
    Django 中的 Slug 是什麼以及為什麼要使用它們?
    揭開Django中「Slugs」的概念在廣闊的Django中,經常出現一種被稱為「slug」的神秘實體出現在模型中。它神秘的本質可能會讓您感到困惑,並提出一個問題:slug 到底是什麼? slug 的起源在於使用者友善的 URL 領域。想像網路上一篇文章的標題是「46 歲的處女」。要根據該標題建構一...
    程式設計 發佈於2024-11-19
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    程式設計 發佈於2024-11-19
  • 如何用Java播放WAV檔?
    如何用Java播放WAV檔?
    使用Java播放WAV檔案開發Java應用程式時,播放音訊檔案是一個常見的需求。本教學提供了播放 *.wav 檔案的全面解決方案,使您能夠將音效和音訊合併到 Java 程式中。 首先,建立一個類別來處理音訊播放。在下面的範例中,我們建立一個 MakeSound 類,其中包含播放音訊檔案的方法:pub...
    程式設計 發佈於2024-11-19
  • 為什麼 Java 中可以使用空物件參考來呼叫靜態方法?
    為什麼 Java 中可以使用空物件參考來呼叫靜態方法?
    使用空引用存取靜態方法在 Java 中,在空引用上呼叫方法通常會觸發 NullPointerException。然而,靜態方法的行為有所不同。 靜態方法與實例方法在 Java 中,方法可以是靜態的,也可以是實例的。靜態方法屬於類別本身,可以直接使用類別名稱調用,而實例方法與物件關聯,需要物件引用才能...
    程式設計 發佈於2024-11-19
  • 如何使用 g++ 建立和使用靜態函式庫?
    如何使用 g++ 建立和使用靜態函式庫?
    使用 g 建立並使用靜態函式庫 在軟體開發中,通常需要將可重複使用程式碼打包到稱為函式庫的模組化單元中。靜態函式庫是一種在編譯時與可執行檔連結的函式庫。本文將引導您完成使用 GNU 編譯器集合 g 建立和使用靜態函式庫的過程。 建立靜態函式庫建立靜態函式庫從header.cpp 和header.hp...
    程式設計 發佈於2024-11-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3