PHP中的DateTime類給我們提供了很多方便的操作方式。通過new DateTime()可以創(chuàng)建一個(gè)DateTime對(duì)象,然后我們就可以調(diào)用它提供的方法比如format()來獲取特定格式的日期時(shí)間。
下面就來舉一些例子來說明DateTime的使用方法。
$today = new DateTime(); echo $today->format('Y-m-d H:i:s'); // 2022-01-17 15:26:34 $nextweek = new DateTime('next week'); echo $nextweek->format('Y-m-d'); // 2022-01-24 $endofmonth = new DateTime('last day of next month'); echo $endofmonth->format('Y-m-d'); // 2022-02-28
通過new DateTime()創(chuàng)建的對(duì)象,我們可以在括號(hào)中指定一個(gè)日期時(shí)間字符串來獲取對(duì)應(yīng)日期時(shí)間的DateTime對(duì)象。我們還可以通過對(duì)象的modify()方法來對(duì)日期時(shí)間進(jìn)行修改,比如將日期時(shí)間往后加上一些時(shí)間段。
$tomorrow = new DateTime('tomorrow'); $tomorrow->modify('+3 hours'); echo $tomorrow->format('Y-m-d H:i:s'); // 2022-01-18 03:27:12 $now = new DateTime(); $birthday = new DateTime('1999-08-31'); $age = $now->diff($birthday); echo $age->y; // 22
通過在new DateTime()中不傳入任何參數(shù),我們就可以創(chuàng)建一個(gè)DateTime對(duì)象來表示當(dāng)前時(shí)間。使用modify()方法可以將當(dāng)前時(shí)間加上或減去指定時(shí)間段,比如可以加上一些小時(shí),分鐘,天數(shù)或者年數(shù)。
使用diff()方法可以計(jì)算兩個(gè)時(shí)間之間的時(shí)間間隔,返回一個(gè)DateInterval對(duì)象。通過DateInterval對(duì)象可以獲取時(shí)間間隔的各個(gè)部分的值,比如年數(shù),月數(shù),天數(shù)等。
除了使用new DateTime()來創(chuàng)建對(duì)象之外,PHP還提供了DateTime的子類DateTimeImmutable。與DateTime不同的是,DateTimeImmutable對(duì)象一旦被創(chuàng)建后,就不能再進(jìn)行修改。如果需要進(jìn)行修改,則需要?jiǎng)?chuàng)建一個(gè)新的DateTimeImmutable對(duì)象。
$today = new DateTimeImmutable(); $tomorrow = $today->modify('+1 day'); echo $today->format('Y-m-d'); // 2022-01-17 echo $tomorrow->format('Y-m-d'); // 2022-01-18
使用DateTimeImmutable不用擔(dān)心對(duì)象的修改會(huì)影響程序的其他部分。如果需要進(jìn)行修改,則需要?jiǎng)?chuàng)建一個(gè)新的DateTimeImmutable對(duì)象。
在DateTime中還提供了很多有用的方法,比如setTimezone()、getTimestamp()、getOffset()等等。通過這些方法可以進(jìn)行更加復(fù)雜的日期時(shí)間操作。這里就不一一列舉了。
總之,通過new DateTime()創(chuàng)建的對(duì)象在PHP中可以進(jìn)行很多方便的日期時(shí)間操作。我們可以通過format()、modify()等方法來獲取和計(jì)算日期時(shí)間,從而更好地編寫日期時(shí)間相關(guān)的程序。