摘要:原文地址中文文檔介紹是的日期處理類庫。例如作者所在的時區為東京時間減小時,因此在下午一點后。最后提到的這兩個方法都是處理時間戳的。以下是當前支持的時間轉換字值得注意的是像和方法等相關的修改會把日期的時間部分設置成。
原文地址 : Carbon中文文檔
介紹Carbon 是php的日期處理類庫(A simple PHP API extension for DateTime.)。
Carbon 繼承自PHP的 DateTime 類
Carbon 繼承了PHP的 Datetime 類,所以 Carbon 中沒有涉及到的,但在 Datetime 中已經實現的方法都是可以使用的。
Carbon 類聲明在 Carbon 命名空間下,可以通過引入命名空間的方式來代替每次輸入完整的類名。
Note:如果在使用 Carbon 時,沒有專門設置時區的話,默認使用 America/Toronto 的時區。要特別留意是否使用了正確的時區,比如 Carbon 的所有差異比較都使用 UTC 或者系統設定的時區。
diffInHours($dtToronto); // 3以上進行的時間比較是在提供的 Carbon 實例所在的時區下完成的。例如作者所在的時區為 東京時間減13 小時,因此在下午一點后。Carbon::now(‘Asia/Tokyo’)->isToday() 將會返回 false ,如果在調用 now() 時設置時區為東京時區,接下來的操作都使用東京時區是說不過去的。所以在與 now() 創建的實例進行比較時,默認是在當前時區下完成的。
初始化有好幾種方式可以創建 Carbon 的實例,但是大家應該更傾向于通過這種語義化的靜態方法來實現。
值得注意的是,Carbon 構造器的第二個參數被增強到了不僅限于是 DateTimeZone 實例,還可以是 String、Integer (表示相對于GMT的偏移值)。舉個栗子來說明下 now() 方法。
tzName; // Europe/London你將會喜歡上用 parse() 方法來代替原有繁瑣的構造方式
addWeeks(2); // 2008-12-15 00:00:00 echo Carbon::parse("first day of December 2008")->addWeeks(2); // 2008-12-15 00:00:00類似 now() 這樣直接返回 Carbon 實例的方法還有 today(), tomorrow(),yesterday(),他們都接受一個 timezone 類型的參數,最后得到的結果時間部分都是 00:00:00
下面是一些其他的 creatXXX() 形式的靜態方法。絕大多數靜態方法的參數是可傳可不傳的,如果不傳的話會使用方法預設的默認值,這些預設值一般都是針對當前日期、時間、時區的。如果為傳遞某個必要參數,會拋出一個 InvalidArgumentException 類型的異常,用 DateTime::getLastErrors() 方法可以得到異常的詳細信息。
createFromDate() 默認返回當前時間,createFromTime()日期默認是今天。crete() 所有為 null 的參數都將默認為當前對應的時間。同樣,時區也默認是當前時區。如果只設置了小時數沒有設置分秒那么分秒默認是 0
getMessage(); }createFromFormat() 與php的DateTime::createFromFormat。不同之處是 $dt 參數可以是 DateTImeZone 的實例或者一個時區的字符串。并且可以會返回參數異常的提示。從createXX()的源碼可以看出,他們都調用了createFromFormat()方法。
toDateTimeString(); // 1975-05-21 22:00:00最后提到的這兩個create方法都是處理Unix時間戳的。第一個將會返回一個等于預期時間戳的 Carbon 實例,時區可以設置也可以選用默認值。第二個方法,createFromTimestampUTC() 與第一個不同的是時區將始終是 UTC(GMT) .第一個方法的第二個示例,只是為了讓這個函數的用法展現的更加明確。Negative timestamps are also allowed.
toDateTimeString(); // 1969-12-31 18:59:59 echo Carbon::createFromTimestamp(-1, "Europe/London")->toDateTimeString(); // 1970-01-01 00:59:59 echo Carbon::createFromTimeStampUTC(-1)->toDateTimeString(); // 1969-12-31 23:59:59copy() 方法可以copy一個已經存在的 Carbon 實例。對copy生成實例進行修改并不會影響被copy對象的本身。
diffInYears($dt->copy()->addYear()); // 1 // $dt was unchanged and still holds the value of Carbon:now()最后,當你正在使用的 DateTime 實例是通過實例化其他繼承了 DateTime 庫而得到的,別怕!通過下邊的方式仍然可以極其友好創建 Carbon 實例。
toDateTimeString(); // 2008-01-01 00:00:00關于毫秒的一些處理。php自帶的 DateTime 類也可以設置毫秒,但是在進行日期的數學預算時并不會考慮毫秒。從 Carbon 1.12.0版本起,實例化、copy也能像 format() 方法一樣支持毫秒(PHP默認的只有 Datetime::format() 支持毫秒)。
micro; // 123456 echo $dt->copy()->micro; // 123456獲取PHP支持的有效時間取值范圍:最早時間、最晚時間
本地化Carbon中,formatLocalized() 方法通過調用 strftime() 方法,彌補了php底層的 DateTime 類不支持區域化設置的缺陷。如果你已經通過使用 setlocale() 方法設置過當前區域,formatLocalized($format) 方法將會按照設置的區域格式進行返回。
formatLocalized("%A %d %B %Y"); // Mittwoch 21 Mai 1975 setlocale(LC_TIME, ""); echo $dt->formatLocalized("%A %d %B %Y"); // Wednesday 21 May 1975diffForHumans() 的結果也會被轉化成區域語言。通過Carbon::setLocale() 方法可以設置 Carbon 的區域語言。
addYear()->diffForHumans(); // in 1 Jahr Carbon::setLocale("en");注意:如果在linux系統中轉換出現了問題,請仔細檢查安裝在本地或生產系統中語言環境。locale -a 列舉出所有可用的語言環境 sudo locale-gen zh_CN.utf8 安裝新的語言環境 sudo dpkg-reconfigure locales 配置啟用新的語言環境,并重啟測試 Aids通過測試方法可以得到一個模擬或真實的 Carbon 實例。只有在一下情況下,主動提供的 Carbon 實例才會被特殊處理:
調用靜態方法 now(),例如: Varbon::now()
傳給 construct 或 parse() 方法的是 null (或空字符串),例如:new Carbon(null)
當傳給 construct 或 parse()的是字符串 now,例如:new Carbon(‘now’)
$knownDate = Carbon::create(2001, 5, 21, 12); // create testing date Carbon::setTestNow($knownDate); // set the mock (of course this could be a real mock object) echo Carbon::now(); // 2001-05-21 12:00:00 echo new Carbon(); // 2001-05-21 12:00:00 echo Carbon::parse(); // 2001-05-21 12:00:00 echo new Carbon("now"); // 2001-05-21 12:00:00 echo Carbon::parse("now"); // 2001-05-21 12:00:00 var_dump(Carbon::hasTestNow()); // bool(true) Carbon::setTestNow(); // clear the mock var_dump(Carbon::hasTestNow()); // bool(false) echo Carbon::now();有用的例子:
class SeasonalProduct { protected $price; public function __construct($price) { $this->price = $price; } public function getPrice() { $multiplier = 1; if (Carbon::now()->month == 12) { $multiplier = 2; } return $this->price * $multiplier; } } $product = new SeasonalProduct(100); Carbon::setTestNow(Carbon::parse("first day of March 2000")); echo $product->getPrice(); // 100 Carbon::setTestNow(Carbon::parse("first day of December 2000")); echo $product->getPrice(); // 200 Carbon::setTestNow(Carbon::parse("first day of May 2000")); echo $product->getPrice(); // 100 Carbon::setTestNow();一些相關的用法也可以得到一個模擬的 now 實例,返回相應的模擬數據。
$knownDate = Carbon::create(2001, 5, 21, 12); // create testing date Carbon::setTestNow($knownDate); // set the mock echo new Carbon("tomorrow"); // 2001-05-22 00:00:00 ... notice the time ! echo new Carbon("yesterday"); // 2001-05-20 00:00:00 echo new Carbon("next wednesday"); // 2001-05-23 00:00:00 echo new Carbon("last friday"); // 2001-05-18 00:00:00 echo new Carbon("this thursday"); // 2001-05-24 00:00:00 Carbon::setTestNow();以下是當前支持的時間轉換字
this
net
last
this
next
last
tomorrow
yesterday
+
-
first
last
ago
值得注意的是像 next() , previous() 和 modify() 方法等相關的修改會把日期的時間部分設置成 00:00:00 。
獲取獲取器通過PHP的 __get() 方式實現。可以直接通過一下方式直接獲取到屬性的值。
$dt = Carbon::parse("2012-9-5 23:26:11.123789"); // These getters specifically return integers, ie intval() var_dump($dt->year); // int(2012) var_dump($dt->month); // int(9) var_dump($dt->day); // int(5) var_dump($dt->hour); // int(23) var_dump($dt->minute); // int(26) var_dump($dt->second); // int(11) var_dump($dt->micro); // int(123789) var_dump($dt->dayOfWeek); // int(3) var_dump($dt->dayOfYear); // int(248) var_dump($dt->weekOfMonth); // int(1) var_dump($dt->weekOfYear); // int(36) var_dump($dt->daysInMonth); // int(30) var_dump($dt->timestamp); // int(1346901971) var_dump(Carbon::createFromDate(1975, 5, 21)->age); // int(41) calculated vs now in the same tz var_dump($dt->quarter); // int(3) // Returns an int of seconds difference from UTC (+/- sign included) var_dump(Carbon::createFromTimestampUTC(0)->offset); // int(0) var_dump(Carbon::createFromTimestamp(0)->offset); // int(-18000) // Returns an int of hours difference from UTC (+/- sign included) var_dump(Carbon::createFromTimestamp(0)->offsetHours); // int(-5) // Indicates if day light savings time is on var_dump(Carbon::createFromDate(2012, 1, 1)->dst); // bool(false) var_dump(Carbon::createFromDate(2012, 9, 1)->dst); // bool(true) // Indicates if the instance is in the same timezone as the local timezone var_dump(Carbon::now()->local); // bool(true) var_dump(Carbon::now("America/Vancouver")->local); // bool(false) // Indicates if the instance is in the UTC timezone var_dump(Carbon::now()->utc); // bool(false) var_dump(Carbon::now("Europe/London")->utc); // bool(false) var_dump(Carbon::createFromTimestampUTC(0)->utc); // bool(true) // Gets the DateTimeZone instance echo get_class(Carbon::now()->timezone); // DateTimeZone echo get_class(Carbon::now()->tz); // DateTimeZone // Gets the DateTimeZone instance name, shortcut for ->timezone->getName() echo Carbon::now()->timezoneName; // America/Toronto echo Carbon::now()->tzName; // America/Toronto設置Setters 通過PHP的 __set() 方法實現。值得注意的是,通過這種方式設置時間戳時,時區不會相對于時間戳而改變。如果需要改變時區的話,需要針對時區多帶帶設置。
$dt = Carbon::now(); $dt->year = 1975; $dt->month = 13; // would force year++ and month = 1 $dt->month = 5; $dt->day = 21; $dt->hour = 22; $dt->minute = 32; $dt->second = 5; $dt->timestamp = 169957925; // This will not change the timezone // Set the timezone via DateTimeZone instance or string $dt->timezone = new DateTimeZone("Europe/London"); $dt->timezone = "Europe/London"; $dt->tz = "Europe/London";快捷設置 (Fluent Setters)此處 Setters 方法的參數是必選參數,Carbon 提供了更多種設置方式可供使用。值得注意的是,所有對于時區的修改都會影響整個到 Carbon 實例。對時間戳進行修改時不會自動轉換到時間戳對應的時區。
$dt = Carbon::now(); $dt->year(1975)->month(5)->day(21)->hour(22)->minute(32)->second(5)->toDateTimeString(); $dt->setDate(1975, 5, 21)->setTime(22, 32, 5)->toDateTimeString(); $dt->setDateTime(1975, 5, 21, 22, 32, 5)->toDateTimeString(); $dt->timestamp(169957925)->timezone("Europe/London"); $dt->tz("America/Toronto")->setTimezone("America/Vancouver");檢查屬性是否調用當嘗試調用 Carbon 實例的屬性時,會首先檢查該屬性是否存在,存在返回 true,不存在返回 false。
var_dump(isset(Carbon::now()->iDoNotExist)); // bool(false) var_dump(isset(Carbon::now()->hour)); // bool(true) var_dump(empty(Carbon::now()->iDoNotExist)); // bool(true) var_dump(empty(Carbon::now()->year)); // bool(false)字串格式化所有類似 toXXXString() 這樣的方法都依賴于DateTime::format()。__toString() 方法允許 Carbon 實例被打印時以一種可讀性更好的方式被打印出來。
$dt = Carbon::create(1975, 12, 25, 14, 15, 16); var_dump($dt->toDateTimeString() == $dt); // bool(true) => uses __toString() echo $dt->toDateString(); // 1975-12-25 echo $dt->toFormattedDateString(); // Dec 25, 1975 echo $dt->toTimeString(); // 14:15:16 echo $dt->toDateTimeString(); // 1975-12-25 14:15:16 echo $dt->toDayDateTimeString(); // Thu, Dec 25, 1975 2:15 PM // ... of course format() is still available echo $dt->format("l jS of F Y h:i:s A"); // Thursday 25th of December 1975 02:15:16 PM另外可以默認設置 __toString() 方法所要顯示的時間日期格式。
Carbon::setToStringFormat("jS of F, Y g:i:s a"); echo $dt; // 25th of December, 1975 2:15:16 pm Carbon::resetToStringFormat(); echo $dt; // 1975-12-25 14:15:16如果需要設定特定的語言顯示,請參考 Localization 部分。通用格式化下面是對 DateTime 類提供的通用格式的一些封裝。
$dt = Carbon::now(); // $dt->toAtomString() is the same as $dt->format(DateTime::ATOM); echo $dt->toAtomString(); // 1975-12-25T14:15:16-05:00 echo $dt->toCookieString(); // Thursday, 25-Dec-1975 14:15:16 EST echo $dt->toIso8601String(); // 1975-12-25T14:15:16-0500 echo $dt->toRfc822String(); // Thu, 25 Dec 75 14:15:16 -0500 echo $dt->toRfc850String(); // Thursday, 25-Dec-75 14:15:16 EST echo $dt->toRfc1036String(); // Thu, 25 Dec 75 14:15:16 -0500 echo $dt->toRfc1123String(); // Thu, 25 Dec 1975 14:15:16 -0500 echo $dt->toRfc2822String(); // Thu, 25 Dec 1975 14:15:16 -0500 echo $dt->toRfc3339String(); // 1975-12-25T14:15:16-05:00 echo $dt->toRssString(); // Thu, 25 Dec 1975 14:15:16 -0500 echo $dt->toW3cString(); // 1975-12-25T14:15:16-05:00比較通過以下方式可以對兩個 Carbon 實例進行簡單的比較。牢記這些比較都是在UTC時區下完成的。
echo Carbon::now()->tzName; // America/Toronto $first = Carbon::create(2012, 9, 5, 23, 26, 11); $second = Carbon::create(2012, 9, 5, 20, 26, 11, "America/Vancouver"); echo $first->toDateTimeString(); // 2012-09-05 23:26:11 echo $first->tzName; // America/Toronto echo $second->toDateTimeString(); // 2012-09-05 20:26:11 echo $second->tzName; // America/Vancouver var_dump($first->eq($second)); // bool(true) var_dump($first->ne($second)); // bool(false) var_dump($first->gt($second)); // bool(false) var_dump($first->gte($second)); // bool(true) var_dump($first->lt($second)); // bool(false) var_dump($first->lte($second)); // bool(true) $first->setDateTime(2012, 1, 1, 0, 0, 0); $second->setDateTime(2012, 1, 1, 0, 0, 0); // Remember tz is "America/Vancouver" var_dump($first->eq($second)); // bool(false) var_dump($first->ne($second)); // bool(true) var_dump($first->gt($second)); // bool(false) var_dump($first->gte($second)); // bool(false) var_dump($first->lt($second)); // bool(true) var_dump($first->lte($second)); // bool(true)如果要判斷當前實例對應的時間,是否在其他兩個實例對應的時間之間,可以用 between() 方法。如果提供了第三個參數,并且為 true,將會進行 >= 和 和 ?
這些方法會在兩個時間差值后增加一寫描述,可能類似下邊這四種:
When comparing a value in the past to default now:
1 hour ago
5 months ago
When comparing a value in the future to default now:
1 hour from now
5 months from now
When comparing a value in the past to another value:
1 hour before
5 months before
When comparing a value in the future to another value:
1 hour after
5 months after
你也可以傳遞第二個參數去掉類似 ago,from now 這種修飾符,類似這樣的用法 diffForHumans(Carbon $other, true) 等。
// The most typical usage is for comments // The instance is the date the comment was created and its being compared to default now() echo Carbon::now()->subDays(5)->diffForHumans(); // 5 days ago echo Carbon::now()->diffForHumans(Carbon::now()->subYear()); // 1 year after $dt = Carbon::createFromDate(2011, 8, 1); echo $dt->diffForHumans($dt->copy()->addMonth()); // 1 month before echo $dt->diffForHumans($dt->copy()->subMonth()); // 1 month after echo Carbon::now()->addSeconds(5)->diffForHumans(); // 5 seconds from now echo Carbon::now()->subDays(24)->diffForHumans(); // 3 weeks ago echo Carbon::now()->subDays(24)->diffForHumans(null, true); // 3 weeks你也通過在 diffForHumans() 被調用前,使用 Carbon::setLocale(‘fr’) 來改變語言設置。詳細請參考 localization 部分。
修改Carbon argument.這些方法組對修改當前實例很有幫助。你會注意到 startOfXXX(),next(),和 previous() 方法將會設置時間為 00:00:00,另外 endOfXXX() 方法將會設置時間為 23:59:59 。
$dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->startOfDay(); // 2012-01-31 00:00:00 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->endOfDay(); // 2012-01-31 23:59:59 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->startOfMonth(); // 2012-01-01 00:00:00 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->endOfMonth(); // 2012-01-31 23:59:59 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->startOfYear(); // 2012-01-01 00:00:00 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->endOfYear(); // 2012-12-31 23:59:59 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->startOfDecade(); // 2010-01-01 00:00:00 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->endOfDecade(); // 2019-12-31 23:59:59 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->startOfCentury(); // 2000-01-01 00:00:00 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->endOfCentury(); // 2099-12-31 23:59:59 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->startOfWeek(); // 2012-01-30 00:00:00 var_dump($dt->dayOfWeek == Carbon::MONDAY); // bool(true) : ISO8601 week starts on Monday $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->endOfWeek(); // 2012-02-05 23:59:59 var_dump($dt->dayOfWeek == Carbon::SUNDAY); // bool(true) : ISO8601 week ends on Sunday $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->next(Carbon::WEDNESDAY); // 2012-02-01 00:00:00 var_dump($dt->dayOfWeek == Carbon::WEDNESDAY); // bool(true) $dt = Carbon::create(2012, 1, 1, 12, 0, 0); echo $dt->next(); // 2012-01-08 00:00:00 $dt = Carbon::create(2012, 1, 31, 12, 0, 0); echo $dt->previous(Carbon::WEDNESDAY); // 2012-01-25 00:00:00 var_dump($dt->dayOfWeek == Carbon::WEDNESDAY); // bool(true) $dt = Carbon::create(2012, 1, 1, 12, 0, 0); echo $dt->previous(); // 2011-12-25 00:00:00 $start = Carbon::create(2014, 1, 1, 0, 0, 0); $end = Carbon::create(2014, 1, 30, 0, 0, 0); echo $start->average($end); // 2014-01-15 12:00:00 // others that are defined that are similar // firstOfMonth(), lastOfMonth(), nthOfMonth() // firstOfQuarter(), lastOfQuarter(), nthOfQuarter() // firstOfYear(), lastOfYear(), nthOfYear()常量Carbon 中定義了以下常量。
// These getters specifically return integers, ie intval() var_dump(Carbon::SUNDAY); // int(0) var_dump(Carbon::MONDAY); // int(1) var_dump(Carbon::TUESDAY); // int(2) var_dump(Carbon::WEDNESDAY); // int(3) var_dump(Carbon::THURSDAY); // int(4) var_dump(Carbon::FRIDAY); // int(5) var_dump(Carbon::SATURDAY); // int(6) var_dump(Carbon::YEARS_PER_CENTURY); // int(100) var_dump(Carbon::YEARS_PER_DECADE); // int(10) var_dump(Carbon::MONTHS_PER_YEAR); // int(12) var_dump(Carbon::WEEKS_PER_YEAR); // int(52) var_dump(Carbon::DAYS_PER_WEEK); // int(7) var_dump(Carbon::HOURS_PER_DAY); // int(24) var_dump(Carbon::MINUTES_PER_HOUR); // int(60) var_dump(Carbon::SECONDS_PER_MINUTE); // int(60)$dt = Carbon::createFromDate(2012, 10, 6); if ($dt->dayOfWeek === Carbon::SATURDAY) { echo "Place bets on Ottawa Senators Winning!"; }CarbonInterval 類Carbon 類繼承了PHP 的DateInterval類。
你也可以通過一下方法創建一個實例。
echo CarbonInterval::year(); // 1 year echo CarbonInterval::months(3); // 3 months echo CarbonInterval::days(3)->seconds(32); // 3 days 32 seconds echo CarbonInterval::weeks(3); // 3 weeks echo CarbonInterval::days(23); // 3 weeks 2 days echo CarbonInterval::create(2, 0, 5, 1, 1, 2, 7); // 2 years 5 weeks 1 day 1 hour 2 minutes 7 seconds如果你繼承的 DateInterval 實例來自其他類庫,別怕,通過 instance() 這種友好的方式你手動可以創建一個 CarbonInterval 實例。
$di = new DateInterval("P1Y2M"); // <== instance from another API $ci = CarbonInterval::instance($di); echo get_class($ci); // "CarbonCarbonInterval" echo $ci; // 1 year 2 months其他的一些輔助方法,但要注意這些輔助方法處理周時,只有天會被保存下來。并且是在當前實例的總天數基礎上計算周。
echo CarbonInterval::year()->years; // 1 echo CarbonInterval::year()->dayz; // 0 echo CarbonInterval::days(24)->dayz; // 24 echo CarbonInterval::days(24)->daysExcludeWeeks; // 3 echo CarbonInterval::weeks(3)->days(14)->weeks; // 2 <-- days setter overwrites the current value echo CarbonInterval::weeks(3)->weeks; // 3 echo CarbonInterval::minutes(3)->weeksAndDays(2, 5); // 2 weeks 5 days 3 minutes也有一個方便的 forHumans(),在調用 __toString() 方法時,自動執行,并打印出可讀性更好的時間格式。
CarbonInterval::setLocale("fr"); echo CarbonInterval::create(2, 1)->forHumans(); // 2 ans 1 mois echo CarbonInterval::hour()->seconds(3); // 1 heure 3 secondes CarbonInterval::setLocale("en");當然,你可以通過 CarbonInterval::setLocale("fr") 來改變語言顯示。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28558.html
摘要:是的日期處理類庫。另外可以默認設置方法所要顯示的時間日期格式。一些特殊的過濾方法,像和可以幫助你過濾時間差中的或者一個自定義的時間間隔。對于人們來說一月前比天前更加易與理解。中定義了以下常量。 Introduction Carbon 是php的日期處理類庫(A simple PHP API extension for DateTime.)。Carbon 繼承了PHP的 Datetime...
摘要:現在面向所有人正式發布了。并且有計劃將作為可選擴展包發布,你仍然可以在項目中使用它們。是最新的穩定版本,將在年月左右處理收到的錯誤修復和更新,并在年月左右之前進行安全修復。中文翻譯中文翻譯已啟動,請關注更多翻譯文章請見開發者社區 showImg(https://segmentfault.com/img/remote/1460000018318895?w=1680&h=859); Lar...
摘要:它是專門用來處理和時間相關的類,除了這里用到的實例化時間計算時間等,還有很多實用的功能,在參考資料中有相關鏈接,可以查看。 導語 這個需求是這樣的,我的電飯鍋有定時功能,第二天早上想要喝粥的話,就要設置倒計時,每次就要算一下要設置多少時間,干脆就寫個代碼好了。很簡單的功能,不值得寫一篇,另一個目的其實是記錄一下從開發到提交 GitHub 的流程。代碼可查看 GitHub。 本地開發 先...
摘要:將上述的一系列查詢進行封裝模型到了這一步,我們基本上實現了文章歸檔的功能。但是有一個問題,文章歸檔實際上包括在通用視圖中,這就意味著,網站的所有請求都需要返回,否則就會報錯。數據庫之數據庫請求構建器中文文檔的視圖功能中文文檔 首先,要實現的是按照日期來統計文章,原始的 SQL 如下: select year(created_at) year, monthname(c...
摘要:年開發者應該熟練使用,并且知道版本更新內容。對開發和運維人員來說,最希望的就是一次性創建或配置,可以在任意地方正常運行。是標準規范,是開發的實踐標準。對開發者來說語言推薦和,全棧的選擇非常多,推薦熱門的 前言 在前天(2018-08-02)已經發布了PHP 7.3.0.beta1 Released 如果你還沒有使用 PHP7 ,那真的很遺憾。2018年PHP開發者應該熟練使用 PHP7...
閱讀 1029·2023-04-26 02:26
閱讀 2134·2021-09-26 10:16
閱讀 1544·2019-08-30 12:57
閱讀 3461·2019-08-29 16:10
閱讀 3214·2019-08-29 13:47
閱讀 1182·2019-08-29 13:12
閱讀 2135·2019-08-29 11:11
閱讀 1330·2019-08-26 13:28