要开始利用DateTime,请利用createFromFormat()工厂方法将原始日期和韶光字符串转换为工具,或者实行新的DateTime以获取当前日期和韶光。利用format()方法将日期韶光转换回用于输出的字符串。
<?php$raw = '22. 11. 1968';$start = DateTime::createFromFormat('d. m. Y', $raw);echo 'Start date: ' . $start->format('Y-m-d') . "\n";
利用DateInterval类可以利用DateTime进行打算。DateTime有像add()和sub()这样的方法,它们以DateInterval为参数。不要编写期望每天都有相同秒数的代码,夏令时和时区变动都会冲破这一假设。改为利用日期间隔。要打算日期差异,请利用diff()方法。它将返回新的DateInterval,非常随意马虎显示。
<?php// 克隆一份 $start ,在其根本上加一个月零6天$end = clone $start;$end->add(new DateInterval('P1M6D'));$diff = $end->diff($start);echo 'Difference: ' . $diff->format('%m month, %d days (total: %a days)') . "\n";// 差值: 1 个月, 6 天 (统共: 37 天)
对付DateTime工具,您可以利用标准比较:

<?phpif ($start < $end) { echo "Start is before the end!\n";}
末了一个演示DatePeriod类的示例。它用于迭代重复发生的事宜。它可以接管两个DateTime工具,Start和End,以及返回这两个工具之间所有事宜的间隔。
<?php// 输出 $start 和 $end 之间所有的周四$periodInterval = DateInterval::createFromDateString('first thursday');$periodIterator = new DatePeriod($start, $periodInterval, $end, DatePeriod::EXCLUDE_START_DATE);foreach ($periodIterator as $date) { // 输出周期内的每个日期 echo $date->format('Y-m-d') . ' ';}
一个盛行的PHP API扩展是Carbon。它继续了DateTime类中的所有内容,因此涉及的代码变动最少,但额外的功能包括本地化支持、添加、减去和格式化DateTime工具的进一步方法,以及通过仿照您选择的日期和韶光来测试代码的方法。
Carbon供应了一些很好的功能来处理 PHP 中的日期,特殊是诸如:
处理时区轻松获取当前韶光将 datetime 转换成可读的内容将英语短语解析成 datetime (first day of January 2016)日期的加减 (+ 2 weeks, -6 months)处理日期的语义方法所有的这些都带来了一个非常有用的包,使得这些在 PHP 中处理韶光非常随意马虎。
// 获取当前韶光 - 2015-12-19 10:10:54$current = Carbon::now();$current = new Carbon();// 获取本日 - 2015-12-19 00:00:00$today = Carbon::today();// 获取昨天 - 2015-12-18 00:00:00$yesterday = Carbon::yesterday();// 获取来日诰日 - 2015-12-20 00:00:00$tomorrow = Carbon::tomorrow();// 解析特定字符串 - 2016-01-01 00:00:00$newYear = new Carbon('first day of January 2016');// 设定一个特定的时区 - 2016-01-01 00:00:00$newYearPST = new Carbon('first day of January 2016', 'America\Pacific');
Carbon 能做的远远不止这些。请务必查看 Carbon 官方文档。希望这能帮助你在 PHP 中更随意马虎的利用日期 / 韶光并加快开拓效率!