企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> PHP中的DateTimeInterface接口是为了给类DateTime类和DateTimeImmutable类做类型约束用的,不能使用用户自定义的类实现此接口。PHP5.5.8起,尝试实现DateTimeInterface接口会产生致命错误。 #### 该接口定义了6个方法: **diff($datetime2, $absolute = false)**:返回两个DateTime对象的差值。接受两个参数,第一个为要进行比较的日期DateTimeInterface对象,第二个参数为可选的表示是否差值必须是正数,如果为true则总是返回正数。默认为false。返回一个DateInterval对象来表示两个日期的差值,若比较失败则返回false。 **format($format)**:返回根据指定格式格式化后的日期。接受一个参数为日期的格式字符串。若失败则返回false。此方法不受区域设置影响。 **getOffset**:以秒为单位返回日期与当前时区偏移量。 **getTimestamp**:获取unix时间戳。 **getTimezone**:返回日期的时区信息类DateTimeZone的对象。 **__wakeup**:魔术方法,返回一个实例化的DateTime对象。 <br> ``` // diff方法实例 $date1 = new DateTime("2018-11-31"); $date2 = new DateTime("2018-11-04"); $interval = $date1->diff($date2,true); dump($interval); // diff方法打印结果 object(DateInterval)#226 (16) { ["y"] => int(0) ["m"] => int(0) ["d"] => int(27) ["h"] => int(0) ["i"] => int(0) ["s"] => int(0) ["f"] => float(0) ["weekday"] => int(0) ["weekday_behavior"] => int(0) ["first_last_day_of"] => int(0) ["invert"] => int(0) ["days"] => int(27) ["special_type"] => int(0) ["special_amount"] => int(0) ["have_weekday_relative"] => int(0) ["have_special_relative"] => int(0) } // diff方法返回值再执行format方法(因为diff方法返回值是个DateInterval对象) echo $interval->format('%R%a days'); // +27 days //该diff方法与时间函数date_diff 效果一致 $date3 = date_create("2018-11-31"); $date4 = date_create("2018-11-04"); $diff = date_diff($date3, $date4,true); // 运行结果是一样的 ``` <br> #### 定义了13个预定义常量: ``` const ATOM = 'Y-m-d\TH:i:sP';(示例:2005-08-15T15:52:01+00:00) const COOKIE = 'l, d-M-Y H:i:s T';(示例:Monday, 15-Aug-2005 15:52:01 UTC) const ISO8601 = 'Y-m-d\TH:i:sO';(示例:2005-08-15T15:52:01+0000) const RFC822 = 'D, d M y H:i:s O';(示例:Mon, 15 Aug 05 15:52:01 +0000) const RFC850 = 'l, d-M-y H:i:s T';(示例:Monday, 15-Aug-05 15:52:01 UTC) const RFC1036 = 'D, d M y H:i:s O';(示例:Mon, 15 Aug 05 15:52:01 +0000) const RFC1123 = 'D, d M Y H:i:s O';(示例:Mon, 15 Aug 2005 15:52:01 +0000) const RFC2822 = 'D, d M Y H:i:s O';(示例:Mon, 15 Aug 2005 15:52:01 +0000) const RFC3339 = 'Y-m-d\TH:i:sP'; // 同ATOM(自 PHP 5.1.3 版本可用) const RFC3339_EXTENDED = 'Y-m-d\TH:i:s.vP';(示例:2005-08-15T15:52:01.000+00:00)// PHP7 可用 const RFC7231 = 'D, d M Y H:i:s \G\M\T';(示例:Wed, 31 Oct 2018 00:00:00 GMT) const RSS = 'D, d M Y H:i:s O';(示例:Mon, 15 Aug 2005 15:52:01 +0000) const W3C = 'Y-m-d\TH:i:sP';(示例:2005-08-15T15:52:01+00:00) // 常量是php内置的预定义常量,需加上DATE_ 前缀 $date1 = new DateTime("2018-10-31"); dump($date1->format(DATE_RFC7231)); // string(29) "Wed, 31 Oct 2018 00:00:00 GMT" $date = date(DATE_RFC7231,time()) dump($date);;// string(29) "Sat, 28 Mar 2020 21:10:54 GMT" ```