当前位置: 首页 > 工具软件 > Carbon > 使用案例 >

Carbon类

卫鸿朗
2023-12-01
Carbon类是从PHP DateTime继承而来的。

第一步,设置本地化

设置时区我们可以放在 app/Providers/AppServiceProvider.php 的 boot() 方法中添加下面的代码来设置全局本地化:

public function boot()
{
  // 设置本地化
  \Carbon\Carbon::setLocale('zh');
}

如果不习惯用 \ 来调用,可以用 use Carbon\Carbon;

调用

 {{ $article->created_at->diffForHumans() }} // 10分钟前

按照类似的格式调用即可。OK,搞定!

Carbon 是一个非常全的时间处理扩展包,可以获取当前时间、明天、昨天、几个星期后的时间、以及解析时间格式字符串中的年月日等等。


use Carbon\Carbon;//引入Carbon类
$now = Carbon::now();//现在$today = Carbon::today();//今天$yesterday = Carbon::yesterday(); //昨天
Carbon::createFromDate($year, $month, $day, $tz);
Carbon::createFromTime($hour, $minute, $second, $tz);
Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);

createFromDate()将默认时间到现在。 createFromTime()将默认日期到今天。create()将默认任何空参数到当前相应的值。和以前一样,$tz默认为当前时区,否则可以是一个DateTimeZone实例或简单的字符串时区值。默认值(模仿底层PHP库)唯一的特殊情况是在指定小时值但没有分钟或秒时发生,默认值为0。

字符串格式

所有可用的toXXXString()方法都依赖于基类方法DateTime :: format()。你会注意到这个__toString()方法被定义了,它允许一个Carbon实例在字符串上下文中被打印为一个漂亮的日期时间字符串。

$dt = Carbon::create(1975, 12, 25, 14, 15, 16);

var_dump($dt->toDateTimeString() == $dt);          // bool(true) => uses __toString()
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

// ... of course format() is still available
echo $dt->format('l jS \\of F Y h:i:s A');         // Thursday 25th of December 1975 02:15:16 PM

常用格式

以下是DateTime类中提供的常用格式的封装器。

$dt = Carbon::now();

// $dt->toAtomString() is the same as $dt->format(DateTime::ATOM);
echo $dt->toAtomString();      // 1975-12-25T14:15:16-05:00
echo $dt->toCookieString();    // Thursday, 25-Dec-1975 14:15:16 EST
echo $dt->toIso8601String();   // 1975-12-25T14:15:16-0500
echo $dt->toRfc822String();    // Thu, 25 Dec 75 14:15:16 -0500
echo $dt->toRfc850String();    // Thursday, 25-Dec-75 14:15:16 EST
echo $dt->toRfc1036String();   // Thu, 25 Dec 75 14:15:16 -0500
echo $dt->toRfc1123String();   // Thu, 25 Dec 1975 14:15:16 -0500
echo $dt->toRfc2822String();   // Thu, 25 Dec 1975 14:15:16 -0500
echo $dt->toRfc3339String();   // 1975-12-25T14:15:16-05:00
echo $dt->toRssString();       // Thu, 25 Dec 1975 14:15:16 -0500
echo $dt->toW3cString();       // 1975-12-25T14:15:16-05:00

为了处理最常用的情况,有一些简单的帮助函数希望从他们的名字中显而易见。对于now()以某种方式与(比如isToday())进行比较的方法,将now()在与实例相同的时区中创建。

$dt = Carbon::now();//张高伟的当前时间
$dt = Carbon::create(2018, 1, 7, 11, 16, 16);//创建一个时间

//张高伟测试
//1 year ago
//2 minutes ago
//24 seconds ago
//1 hour ago
//1 day ago
//1 week ago
//6 days ago
echo  $dt->diffForHumans();//人性化格式

die;

 $dt->isWeekday();$dt->isWeekend();$dt->isYesterday();$dt->isToday();$dt->isTomorrow();$dt->isFuture();$dt->isPast();$dt->isLeapYear(); //是否闰年$dt->isSameDay(Carbon::now());//是否同一天$born = Carbon::createFromDate(1987, 4, 23);$noCake = Carbon::createFromDate(2014, 9, 26);$yesCake = Carbon::createFromDate(2014, 4, 23);$overTheHill = Carbon::now()->subYears(50);var_dump($born->isBirthday($noCake)); // bool(false)var_dump($born->isBirthday($yesCake)); // bool(true)var_dump($overTheHill->isBirthday()); // bool(true) -> default compare it to today!



 类似资料: