您的位置 首页 php

PHP自带的DateTime类,Carbon扩展类,真正的“相见恨晚!”

Date and Time

PHP有一个名为DateTime的类,可以帮助您读取、写入、比较或计算日期和时间。除了DATETIME之外,PHP中还有许多与日期和时间相关的函数,但它为大多数常见用途提供了良好的面向对象接口。它可以处理时区,但这不在这个简短的介绍范围之内。

要开始使用 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 对象,您可以使用标准比较:

 <?php
if ($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 中更容易的使用日期 / 时间并加快开发效率!

文章来源:智云一二三科技

文章标题:PHP自带的DateTime类,Carbon扩展类,真正的“相见恨晚!”

文章地址:https://www.zhihuclub.com/80552.shtml

关于作者: 智云科技

热门文章

网站地图