栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

工具篇

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

工具篇

我只是一个搬运工 ~ 0.0

Carbon介绍

Carbon 是php的日期处理类库
Carbon 继承了PHP的 Datetime 类,所以 Carbon 中没有涉及到的,但在 Datetime 中已经实现的方法都是可以使用的。

Laravel 中的 Carbon 就是这货。

选择适合的Carbon版本:

目前 Carbon 1.x 仅版本适用于php 5.3以上的版本
Carbon 2.x 也可以使用了,但是要求php 5.4以上的版本
选择合适的安装方式:
composer安装(最简单并且推荐的方法):
命令行安装

$ composer require nesbot/carbon

编辑composer.json文件:

{
   "require": {
      "nesbot/carbon": "*"
   }
}

直接下载 Carbon.php安装到项目中:


Carbon实例

Carbon 类声明在 Carbon 命名空间下,可以通过引入命名空间的方式来代替每次输入完整的类名。


Note: 如果在使用 Carbon 时,没有专门设置时区的话,默认使用 America/Toronto 的时区。
要特别留意是否使用了正确的时区,比如 Carbon 的所有差异比较都使用 UTC 或者系统设定的时区。

diffInHours($dtToronto); // 3

以上进行的时间比较是在提供的 Carbon 实例所在的时区下完成的。例如作者所在的时区为 东京时间减13 小时,因此在下午一点后。Carbon::now(‘Asia/Tokyo’)->isToday() 将会返回 false ,如果在调用 now() 时设置时区为东京时区,接下来的操作都使用东京时区是说不过去的。所以在与 now() 创建的实例进行比较时,默认是在当前时区下完成的。

值得注意的是,Carbon 构造器的第二个参数被增强到了不仅限于是 DateTimeZone 实例,还可以是 String、Integer。举个栗子来说明下 now() 方法。

tzName;      // Europe/London

你将会喜欢上用 parse() 方法来代替原有繁琐的构造方式

addWeeks(2);     // 2008-12-15 00:00:00
echo Carbon::parse('first day of December 2008')->addWeeks(2);    // 2008-12-15 00:00:00

类似 now() 这样直接返回 Carbon 实例的方法还有 today(), tomorrow(),yesterday(),他们都接受一个 timezone 类型的参数,最后得到的结果时间部分都是 00:00:00


下面是一些其他的 creatXXX() 形式的静态方法。绝大多数静态方法的参数是可传可不传的,如果不传的话会使用方法预设的默认值,这些预设值一般都是针对当前日期、时间、时区的。如果为传递某个必要参数,会抛出一个 InvalidArgumentException 类型的异常,用 DateTime::getLastErrors() 方法可以得到异常的详细信息。


createFromDate() 默认返回当前时间,createFromTime()日期默认是今天。crete() 所有为 null 的参数都将默认为当前对应的时间。同样,时区也默认是当前时区。如果只设置了小时数没有设置分秒那么分秒默认是 0

getMessage(); }

copy() 方法可以copy一个已经存在的 Carbon 实例。对copy生成实例进行修改并不会影响被copy对象的本身。

diffInYears($dt->copy()->addYear());  // 1

// $dt was unchanged and still holds the value of Carbon:now()

关于毫秒的一些处理。php自带的 DateTime 类也可以设置毫秒,但是在进行日期的数学预算时并不会考虑毫秒。从 Carbon 1.12.0版本起,实例化、copy也能像 format() 方法一样支持毫秒(PHP默认的只有 Datetime::format() 支持毫秒)。

micro;    // 123456
echo $dt->copy()->micro;   // 123456

…等等…

Carbon的一些使用
$knownDate = Carbon::create(2001, 5, 21, 12);   // create testing date
Carbon::setTestNow($knownDate);   // set the mock
echo new Carbon('tomorrow');      // 2001-05-22 00:00:00  ... notice the time !
echo new Carbon('yesterday');     // 2001-05-20 00:00:00
echo new Carbon('next wednesday');// 2001-05-23 00:00:00
echo new Carbon('last friday');   // 2001-05-18 00:00:00
echo new Carbon('this thursday'); // 2001-05-24 00:00:00
Carbon::setTestNow();      

以下是当前支持的时间转换字

  1. this
  2. net
  3. last
  4. this
  5. next
  6. last
  7. tomorrow
  8. yesterday
  9. “+”
  10. “-”
  11. first
  12. last
  13. ago
//1、基本应用
$now = Carbon::now();      //2018-12-14 14:13:16
$today = Carbon::today();  //2018-12-14 00:00:00
$tomorrow = Carbon::tomorrow();   //2018-12-15 00:00:00
$yesterday = Carbon::yesterday(); //2018-12-13 00:00:00

//2、判断是否是某一天(2018-12-14(周五)举例)
$now = Carbon::now();
var_dump($now->isWeekend());//false 因为周五不是周末
var_dump($now->isWeekday());//true  因为周五是工作日
var_dump($now->isFriday());//true 因为今天是周五
$now->isToday();
$now->isTomorrow();
$now->isFuture();
$now->isPast();

//3、创建某一天的carbon对象并且进行加减计算
$date = Carbon::create(2016, 12, 25, 0, 0, 0);//2016-12-25 00:00:00
$next_year=$date->addYears(2);//2018-12-25 00:00:00
$past_year=$date->subYears(2);//2014-12-25 00:00:00
$next_month=$date->addMonths(2);//2017-02-25 00:00:00
$past_month=$date->subMonths(2);//2016-10-25 00:00:00
$next_day=$date->addDays(2);//2016-12-27 00:00:00
$past_day=$date->subDays(2);//2016-12-23 00:00:00
...更有addWeekdays()、addWeeks()、addHours()等方法

//4、将carbon对象转换成string类型
$dt = Carbon::create(1975, 12, 25, 14, 15, 16);
echo $dt->toDateString();     // 1975-12-25
echo $dt->toFormattedDateString();   // Dec 25, 1975
echo $dt->toTimeString();     // 14:15:16
echo $dt->toDateTimeString(); // 1975-12-25 14:15:16
echo $dt->toDayDateTimeString();     // Thu, Dec 25, 1975 2:15 PM

//5、两个时间的比较
$first = Carbon::create(2018, 12, 25, 0, 0, 0);
$second = Carbon::create(2016, 12, 25, 0, 0, 0);

var_dump($first->eq($second));  
var_dump($first->ne($second));    
var_dump($first->gt($second));     
var_dump($first->gte($second));    
var_dump($first->lt($second));     
var_dump($first->lte($second));    

//6、简单的周月
$dt = Carbon::create(2012, 1, 31, 12, 0, 0);
echo $dt->startOfDay();// 2012-01-31 00:00:00

$dt = Carbon::create(2012, 1, 31, 12, 0, 0);
echo $dt->endOfDay();  // 2012-01-31 23:59:59

$dt = Carbon::create(2012, 1, 31, 12, 0, 0);
echo $dt->startOfMonth();     // 2012-01-01 00:00:00

$dt = Carbon::create(2012, 1, 31, 12, 0, 0);
echo $dt->endOfMonth();// 2012-01-31 23:59:59

上面介绍的是一些基本的Carbon使用。Carbon最大的特点就是灵活、人性化。

更多使用方法,参阅:carbon.nesbot.com/docs/

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号