国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
PHP:了解時區(qū)
spO0q ? 8 月 4 日
首頁 後端開發(fā) php教程 PHP:逃離日期地獄的實用方法

PHP:逃離日期地獄的實用方法

Nov 30, 2024 am 09:14 AM

企業(yè)的關鍵功能通常依賴日期,例如訂閱、定期付款或預訂。

身為 PHP 程式設計師,您可能需要操作日期/時間。

開始使用第三方函式庫?真的嗎?

雖然堅持使用本機 API 來掌握技能並了解語言的工作原理通常是一個很好的做法,但讓我們務實一些。

Carbon 是一個功能強大的函式庫,它擴充了 DateTimeInterface、JsonSerialized 和其他原生 PHP 工具。

它為操作現有和新的日期物件提供了有用的幫助器:

// Tomorrow
CarbonImmutable::now()->add(1, 'day');

// Copy instance from another API
$dateTime = new \DateTime('first day of January 2025');
$carbon = Carbon::instance($dateTime);

// Parsing values
$date = Carbon::parse('2050-01-01 12:34:00', 'UTC');

回到基礎

Carbon 擴充了原生 API,但 DateTime 物件已經提供了計算日期和時間的工具:

$date = new DateTime('2024-07-23');
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d');

$date2 = new DateTime('2024-08-03');
$interval = $date->diff($date2);
echo $interval->format('%R%a days');

您可以傳遞字串來取得特定輸出或計算間隔和週期。

那麼,為什麼要使用碳等附加層呢?

更好的可讀性

$yesterday = Carbon::yesterday();
$today = Carbon::today();
$now = Carbon::now();
$tomorrow = Carbon::tomorrow();
$futureDate = Carbon::today()->addDays(21)->format('Y-m-d');

if ($now->isEndOfDay()) {
    // Some code
}

該函式庫對於日期比較來說方便且強大,但很容易出現各種錯誤。

輕鬆本地化

Carbon 可以方便處理語言環(huán)境:

$now = Carbon::now()->locale('fr_FR');
echo $now->monthName;

處理溢出

預設的 PHP DateTime 行為在添加或減去月份時可能會產生誤導。它可以溢出!

雖然您有時可能需要這種行為,但 Carbon 提供了更好的控制:

Carbon::useMonthsOverflow(false);
Carbon::resetMonthsOverflow();

您也可以在操作年或月時在每個方法中配置溢出(例如,subMonthsNoOverflow、addMonthsWithOverflow)。

單元測試日期

由於可變性,日期在單元測試中可能會出現問題。

Carbon 提供了先進的模擬功能,確保測試保持一致且可靠。

這可以防止隨機錯誤破壞 CI/CD 管道。

如何避免日期/時間的常見陷阱

無論您是否使用 Carbon,都有一些實用的方法可以減少潛在的錯誤和不一致:

不要消除錯誤

PHP 的最新版本引入了更好的日期/時間異常,使您能夠更一致地捕獲意外輸入。

但是,實現有時可以消除嚴重錯誤:

$dateInput = '2dsds';
$timestamp = strtotime($dateInput);
echo date('Y-m-d', $timestamp); // Defaults back to 1970-01-01

以下程式碼並不是改進,即使它使用 DateTime 物件:

$dateInput = '2024-02-30'; // Invalid date (February has 28 days, 29 at most)
$date = new DateTime($dateInput);
echo $date->format('l \t\h\e jS F'); // Outputs "Friday the 1st March"

所以,總是驗證日期/時間:

$dateInput = '2dsds';
$timestamp = strtotime($dateInput);

if (false === $timestamp) {
    throw new InvalidArgumentException();
}

echo date('Y-m-d', $timestamp);

並且,深入檢查輸入:

$format = 'Y-m-d';
$dateInput = '2024-02-30';
$dateInfo = date_parse($dateInput);
if (!checkdate($dateInfo['day'], $dateInfo['month'], $dateInfo['year'])) {
    throw new InvalidArgumentException();
}

$date = DateTimeImmutable::createFromFormat($format, $dateInput);
echo $date->format('l \t\h\e jS F');

防止意外突變

DateTimeImmutable 或 CarbonImmutable 建立後無法變更。大多數時候,您不需要更改初始日期。

如果程式碼的其他部分依賴該實例,則可能會引入嚴重的錯誤。

不可變格式可以防止此類副作用,並且通常更有利於可讀性和測試。

不要忽視時區(qū)

忽略時區(qū)是有風險的:

PHP: Practical ways to escape from the hell of Dates

PHP:了解時區(qū)

spO0q ? 8 月 4 日

#php #初學者 #程式設計

如果您未在應用程式中指定預設時區(qū),則伺服器將確定它。

但是,您的應用程式可能部署在不同時區(qū)的伺服器上。

您可能還會遇到夏令時或儲存格式(例如,UTC 與當地時間)等複雜問題,如果程式庫鼓勵良好實踐,這可能會減輕一些痛苦。

包起來

原生 API 允許對日期和時間進行高級操作,而 Carbon 則對其進行了精美的擴展。

PHP 開發(fā)人員可以利用這個附加層來簡化計算並提高可讀性。

無論您是否使用它,請確保您了解本機 PHP DateTime 物件的預設行為。

以上是PHP:逃離日期地獄的實用方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

什麼是PHP,為什麼它用於Web開發(fā)? 什麼是PHP,為什麼它用於Web開發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

我如何了解最新的PHP開發(fā)和最佳實踐? 我如何了解最新的PHP開發(fā)和最佳實踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

如何設置PHP時區(qū)? 如何設置PHP時區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

編寫清潔和可維護的PHP代碼的最佳實踐是什麼? 編寫清潔和可維護的PHP代碼的最佳實踐是什麼? Jun 24, 2025 am 12:53 AM

寫乾淨、易維護的PHP代碼關鍵在於清晰命名、遵循標準、合理結構、善用註釋和可測試性。 1.使用明確的變量、函數和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標準統(tǒng)一代碼風格;3.按職責拆分代碼結構,使用MVC或Laravel式目錄組織;4.避免麵條式代碼,將邏輯拆分為單一職責的小函數;5.在關鍵處添加註釋並撰寫接口文檔,明確參數、返回值和異常;6.提高可測試性,採用依賴注入、減少全局狀態(tài)和靜態(tài)方法。這些做法提升代碼質量、協(xié)作效率和後期維護便利性。

如何使用PHP執(zhí)行SQL查詢? 如何使用PHP執(zhí)行SQL查詢? Jun 24, 2025 am 12:54 AM

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas

如何快速測試PHP代碼片段? 如何快速測試PHP代碼片段? Jun 25, 2025 am 12:58 AM

toquicklytestaphpcodesnippet,useanonlinephpsandboxlike3v4l.orgorphpize.onlineforinstantantantExecutionWithOutSetup; runco????delocalocallocallocallocallocallocallywithpplibycreatinga.phpfileandexecutingitviateringitviatheterminal;

如何升級PHP版本? 如何升級PHP版本? Jun 27, 2025 am 02:14 AM

升級PHP版本其實不難,但關鍵在於操作步驟和注意事項。以下是具體方法:1.確認當前PHP版本及運行環(huán)境,使用命令行或phpinfo.php文件查看;2.選擇適合的新版本並安裝,推薦8.2或8.1,Linux用戶用包管理器安裝,macOS用戶用Homebrew;3.遷移配置文件和擴展,更新php.ini並安裝必要擴展;4.測試網站是否正常運行,檢查錯誤日誌確保無兼容性問題。按照這些步驟操作,大多數情況都能順利完成升級。

如何在PHP中使用頁面緩存? 如何在PHP中使用頁面緩存? Jun 24, 2025 am 12:50 AM

PHP頁面緩存可通過減少服務器負載和加快頁面加載速度提升網站性能。 1.基本文件緩存通過生成靜態(tài)HTML文件並在有效期內提供服務,避免重複生成動態(tài)內容;2.啟用OPcache可將PHP腳本編譯為字節(jié)碼存儲在內存中,提升執(zhí)行效率;3.對帶參數的動態(tài)頁面,應根據URL參數分別緩存,並避免緩存用戶特定內容;4.可使用輕量級緩存庫如PHPFastCache簡化開發(fā)並支持多種存儲驅動。結合這些方法能有效優(yōu)化PHP項目的緩存策略。

See all articles