>  기사  >  백엔드 개발  >  Laravel의 날짜 및 시간 처리 패키지 Carbon 사용에 대해

Laravel의 날짜 및 시간 처리 패키지 Carbon 사용에 대해

不言
不言원래의
2018-06-13 11:12:402027검색

날짜 형식, 시간대, 윤년, 날짜가 다른 월 등 날짜와 시간을 처리할 때 고려해야 할 사항이 많습니다. Laravel의 시간 처리 패키지 Carbon은 사용이 간편하며 도움이 필요한 친구들이 참조할 수 있습니다.

머리말

우리 모두는 PHP 애플리케이션을 작성할 때 날짜와 시간을 처리해야 하는 경우가 많습니다. 이 기사에서는 처리를 더 쉽게 해주는 PHP DateTime 클래스에서 상속된 API 확장인 Carbon에 대해 설명합니다. 날짜와 시간으로.

Laravel에서 사용되는 기본 시간 처리 클래스는 Carbon입니다.

<?php
namespace Carbon;
 
class Carbon extends \DateTime
{
 // code here
}

Carbon 네임스페이스의 Carbon 클래스에서 위에서 선언한 코드 조각을 볼 수 있습니다.

Installation

Carbon은 Composer를 통해 설치할 수 있습니다:

composer require nesbot/carbon

PS: Laravel 프로젝트에서는 기본적으로 이 패키지를 설치하므로 위 명령을 실행할 필요가 없습니다. 다시.


을 사용하려면 매번 완전한 이름을 제공하지 않고 사용할 수 있도록 네임스페이스를 통해 Carbon을 가져와야 합니다.

use Carbon\Carbon;

현재 시간 가져오기

now() 메서드를 사용하면 현재 날짜와 시간을 가져올 수 있습니다. 매개변수를 지정하지 않으면 PHP 구성의 시간대가 사용됩니다.

<?php
echo Carbon::now(); //2016-10-14 20:21:20
?>

다른 시간대를 사용하려면 유효한 시간대를 매개변수로 전달해야 합니다.

ㅋㅋㅋ

문자열 유형을 얻으려면 날짜의 경우 다음 코드를 사용할 수 있습니다.

// 直接使用字符串
echo Carbon::now(&#39;Europe/London&#39;); //2016-10-14 20:21:20
// 或者
echo Carbon::now(new DateTimeZone(&#39;Europe/London&#39;));
now() 外,还提供了 today() tomorrow()yesterday()

날짜 유형을 문자열로 변환

위에서 언급한 것처럼 기본적으로 Carbon 메서드는 날짜 및 시간 개체입니다. 객체이지만 __toString 매직 메소드 덕분에 echo를 사용하여 직접 결과를 출력할 수 있습니다. 하지만 문자열로 변환하려면 toDateString 또는 toDateTimeString 메서드를 사용할 수 있습니다.

echo Carbon::now();        // 2016-10-14 15:18:34
echo Carbon::today();       // 2016-10-14 00:00:00
echo Carbon::tomorrow(&#39;Europe/London&#39;);       // 2016-10-14 00:00:00
echo Carbon::yesterday();       // 2016-10-14 00:00:00

Date parsing

또한 구문 분석 메서드를 사용하여 날짜의 순서와 유형을 구문 분석할 수도 있습니다( 결과는 Carbon 유형 datetime 객체입니다):

Carbon {#179 ▼
 +"date": "2016-06-14 00:00:00.000000"
 +"timezone_type": 3
 +"timezone": "UTC"
}

날짜 구성

별도의 연도, 월, 일을 사용하여 날짜를 구성할 수도 있습니다.

echo Carbon::today()->toDateTimeString();
echo Carbon::yesterday()->toDateTimeString();
echo Carbon::tomorrow()->toDateTimeString();

또한 다음을 통과할 수 있습니다. 마지막 매개변수로 유효한 시간대입니다.

날짜 연산

날짜 연산은 덧셈(증가) 또는 뺄셈(뺄셈)을 통해 더하거나 뺄 단위를 따라잡을 수 있습니다. 예를 들어, 날짜에 지정된 일 수를 추가하려면 addDays 메소드를 사용할 수 있습니다. 또한 수정 방법이 제공됩니다. 매개변수 형식은 + 또는 - 뒤에 값과 단위가 옵니다. 따라서 현재 날짜에 1년을 추가하려면 +1년을 넘길 수 있습니다.

echo Carbon::now()->toDateString(); //2016-10-14
echo Carbon::now()->toDateTimeString(); //2016-10-14 20:22:50

날짜 비교

Carbon에서는 다음 방법을 사용하여 날짜를 비교할 수 있습니다.

min – 최소 날짜를 반환합니다.

max - 최대 날짜를 반환합니다.

eq – 두 날짜가 같은지 여부를 확인합니다.

gt – 첫 번째 날짜가 두 번째 날짜보다 큰지 여부를 결정합니다.

  • lt – 첫 번째 날짜가 두 번째 날짜보다 작은지 확인합니다.

  • gte – 첫 번째 날짜가 두 번째 날짜보다 크거나 같은지 확인합니다.

  • lte – 첫 번째 날짜가 두 번째 날짜보다 작거나 같은지 확인합니다.

  • echo Carbon::parse(&#39;2016-10-15&#39;)->toDateTimeString(); //2016-10-15 00:00:00
    echo Carbon::parse(&#39;2016-10-15&#39;)->toDateTimeString(); //2016-10-15 00:00:00
    echo Carbon::parse(&#39;2016-10-15 00:10:25&#39;)->toDateTimeString(); //2016-10-15 00:10:25
     
    echo Carbon::parse(&#39;today&#39;)->toDateTimeString(); //2016-10-15 00:00:00
    echo Carbon::parse(&#39;yesterday&#39;)->toDateTimeString(); //2016-10-14 00:00:00
    echo Carbon::parse(&#39;tomorrow&#39;)->toDateTimeString(); //2016-10-16 00:00:00
    echo Carbon::parse(&#39;2 days ago&#39;)->toDateTimeString(); //2016-10-13 20:49:53
    echo Carbon::parse(&#39;+3 days&#39;)->toDateTimeString(); //2016-10-18 20:49:53
    echo Carbon::parse(&#39;+2 weeks&#39;)->toDateTimeString(); //2016-10-29 20:49:53
    echo Carbon::parse(&#39;+4 months&#39;)->toDateTimeString(); //2017-02-15 20:49:53
    echo Carbon::parse(&#39;-1 year&#39;)->toDateTimeString(); //2015-10-15 20:49:53
    echo Carbon::parse(&#39;next wednesday&#39;)->toDateTimeString(); //2016-10-19 00:00:00
    echo Carbon::parse(&#39;last friday&#39;)->toDateTimeString(); //2016-10-14 00:00:00
  • 날짜가 두 날짜 사이에 있는지 확인하려면 between() 메서드를 사용할 수 있습니다. 세 번째 선택적 매개변수는 비교가 동일할 수 있는지 여부를 지정합니다.

  • $year = &#39;2015&#39;;
    $month = &#39;04&#39;;
    $day = &#39;12&#39;;
     
    echo Carbon::createFromDate($year, $month, $day); //2015-04-12 20:55:59
     
    $hour = &#39;02&#39;;
    $minute = &#39;15&#39;:
    $second = &#39;30&#39;;
     
    echo Carbon::create($year, $month, $day, $hour, $minute, $second); //2015-04-12 02:15:30
     
    echo Carbon::createFromDate(null, 12, 25); // 年默认为当前年份

  • 또한 일부 도우미 메서드가 제공되므로 이름의 의미를 이해할 수 있습니다.
  • echo Carbon::now()->addDays(25); //2016-11-09 14:00:01
    echo Carbon::now()->addWeeks(3); //2016-11-05 14:00:01
    echo Carbon::now()->addHours(25); //2016-10-16 15:00:01
    echo Carbon::now()->subHours(2); //2016-10-15 12:00:01
    echo Carbon::now()->addHours(2)->addMinutes(12); //2016-10-15 16:12:01
    echo Carbon::now()->modify(&#39;+15 days&#39;); //2016-10-30 14:00:01
    echo Carbon::now()->modify(&#39;-2 days&#39;); //2016-10-13 14:00:01

diffForHumans

"1개월 전"이 "30일 전"보다 읽기 쉽습니다. 많은 날짜 라이브러리는 날짜가 구문 분석된 후 다음 네 가지 가능성을 제공합니다.

1. 비교 시간이 현재 기본 시간을 초과하는 경우

1일 전

5개월 전

2. 미래의 시간을 현재의 기본 시간과 비교할 때


1시간 후
  • 5개월 후
  • 3. 비교된 값이 다른 값을 초과하는 경우


1시간 전
  • 5개월 전

4、当比较的值在另一个值之后

  • 1小时后

  • 5月后

你可以把第二个参数设置为 true 来删除“前”、“距现在”等修饰语:diffForHumans(Carbon $other, true)  。

echo Carbon::now()->subDays(5)->diffForHumans();        // 5天前
 
echo Carbon::now()->diffForHumans(Carbon::now()->subYear());  // 1年后
 
$dt = Carbon::createFromDate(2011, 8, 1);
 
echo $dt->diffForHumans($dt->copy()->addMonth());       // 1月前
echo $dt->diffForHumans($dt->copy()->subMonth());       // 11月后
 
echo Carbon::now()->addSeconds(5)->diffForHumans();      // 5秒距现在
 
echo Carbon::now()->subDays(24)->diffForHumans();       // 3周前
echo Carbon::now()->subDays(24)->diffForHumans(null, true);  // 3周

本地化

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

public function boot()
{
  \Carbon\Carbon::setLocale(&#39;zh&#39;);
}

设置好之后,在输出时间的地方调用:

$article->created_at->diffForHumans();

类似的格式即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何解决PHP基于DateTime类Unix时间戳与日期互转的问题

关于laravel 5.1下php artisan migrate的使用

위 내용은 Laravel의 날짜 및 시간 처리 패키지 Carbon 사용에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.