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 | 秒 |