PHP实战中知识总结 / 日期相关的类 - DateInterval类

表示一个时间周期的类。
一个时间周期表示固定量的时间(多少年,月,天,小时等), 也可以表示一个字符串格式的相对时间, 当表示相对时间的时候,字符串格式是DateTime类的构造函数所支持的格式。

DateInterval {
  /* 属性 */
  public integer $y ;
  public integer $m ;
  public integer $d ;
  public integer $h ;
  public integer $i ;
  public integer $s ;
  public float $f ;
  public integer $invert ;//1表示一个负的时间周期,0表示一个正的时间周期
  public mixed $days ;
  /* 方法 */
  public __construct ( string $interval_spec )
  public static createFromDateString ( string $time ) : DateInterval
  public format ( string $format ) : string
}
// 构造函数参数 string $interval_spec,创建新的DateInterval对象
$datetime = new DateTime('2019-07-14 14:00:00');
$interval = new DateInterval('P2W'); //P2W 表示两周,14天
dump($interval);
object(DateInterval)#227 (16) {
 ["y"] => int(0)
 ["m"] => int(0)
 ["d"] => int(14)
 ["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"] => bool(false)
 ["special_type"] => int(0)
 ["special_amount"] => int(0)
 ["have_weekday_relative"] => int(0)
 ["have_special_relative"] => int(0)
}
// DateTime类的add方法:向DateTime对象添加天数、月数、年数、小时数、分钟数和秒数
$datetime->add($interval);
echo $datetime->format('Y-m-d H:i:s'); //加14天, 2019-07-28 14:00:00
// DateTime类的sub方法:从DateTime对象中减去天、月、年、小时、分钟和秒
$datetime->sub($interval); //减14天, 2019-07-14 14:00:00
echo $datetime->format('Y-m-d H:i:s');
// DateTime类的diff方法:返回表示为DateInterval的两个DateTime对象之间的差异。返回DateInterval对象
$date1 = new DateTime("2019-11-04");
$date2 = new DateTime("2019-11-05");
$diff_interval = $date1->diff($date2);
dump($diff_interval);
// DateInterval 的format方法,格式参考‘DateInterval的format格式化参数’
echo $diff_interval->format('%R%a days'); // +1 days
// DateInterval:根据字符串创建DateInterval对象
// 以下每组的运行结果都相等
$i = new DateInterval('P1D');
$i = DateInterval::createFromDateString('1 day');
$i = new DateInterval('P2W');
$i = DateInterval::createFromDateString('2 weeks');
$i = new DateInterval('P3M');
$i = DateInterval::createFromDateString('3 months');
$i = new DateInterval('P4Y');
$i = DateInterval::createFromDateString('4 years');
$i = new DateInterval('P1Y1D');
$i = DateInterval::createFromDateString('1 year + 1 day');
$i = new DateInterval('P1DT12H');
$i = DateInterval::createFromDateString('1 day + 12 hours');
$i = new DateInterval('PT3600S');
$i = DateInterval::createFromDateString('3600 seconds');

构造函数参数 string $interval_spec 如:P2W。格式以字母P开头,每个持续时间段由一个整数值表示,后跟一个周期标志符。 如果持续时间包含时间元素(表中的HMS),则在规范的该部分之前加上字母T。

周期标志符描述
Y
M
D
W周。这些被转换成天,所以不能与*D组合*.
H小时
M分钟
S

PHP实战中知识总结