1. 程式人生 > >PHP日期類介面之DateTimeInterface介紹

PHP日期類介面之DateTimeInterface介紹

PHP中的DateTimeInterface介面是為了給類DateTime和DateTimeImmutable做型別約束用的,不能使用使用者自定義的類實現此介面。PHP5.5.8起,嘗試實現DateTimeInterface介面會產生致命錯誤。

介面定義了六個方法:

diff:返回兩個DateTime物件的差值。接受兩個引數,第一個為要進行比較的日期DateTimeInterface物件,第二個引數為可選的表示是否差值必須是正數,如果為true則總是返回正數。預設為false。返回一個DateInterval物件來表示兩個日期的差值,若比較失敗則返回false。

format:返回根據指定格式格式化後的日期。接受一個引數為日期的格式字串。返回一個按指定格式格式化後的字串,若失敗則返回false。此方法不受區域設定影響,返回的都是英文字元。

getOffset:以秒為單位返回日期與當前時區偏移量。

getTimestamp:獲取unix時間戳。

getTimezone:返回日期的時區資訊類DateTimeZone的物件。

__wakeup魔術方法,返回一個例項化的DateTime物件。

<?php
$date1=new DateTime("2018-10-31");
$date2=new DateTime("2018-11-04");
$interval=$date1->diff($date2);
echo $interval->format('%R%a days'),"\n";
$interval=$date2->diff($date1);
echo $interval->format('%R%a days'),"\n";
$interval=$date2->diff($date1,true);
echo $interval->format('%R%a days'),"\n";
$date1=new DateTime("2018-10-31",new DateTimeZone('America/New_York'));
echo $date1->getOffset(),"\n";
echo $date1->getTimestamp(),"\n";
echo $date2->format('Y-m-d'),"\n";
echo date('Y-m-d',1540958400),"\n";
$timezone=$date2->getTimezone();
echo $timezone->getName(),"\n";
?>