날짜 형식, 시간대, 윤년, 날짜가 다른 월 등 날짜와 시간을 처리할 때 고려해야 할 사항이 많습니다. 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('Europe/London'); //2016-10-14 20:21:20 // 或者 echo Carbon::now(new DateTimeZone('Europe/London'));
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('Europe/London'); // 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에서는 다음 방법을 사용하여 날짜를 비교할 수 있습니다.
eq – 두 날짜가 같은지 여부를 확인합니다.
gt – 첫 번째 날짜가 두 번째 날짜보다 큰지 여부를 결정합니다.
lt – 첫 번째 날짜가 두 번째 날짜보다 작은지 확인합니다.
gte – 첫 번째 날짜가 두 번째 날짜보다 크거나 같은지 확인합니다.
lte – 첫 번째 날짜가 두 번째 날짜보다 작거나 같은지 확인합니다.
echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00 echo Carbon::parse('2016-10-15')->toDateTimeString(); //2016-10-15 00:00:00 echo Carbon::parse('2016-10-15 00:10:25')->toDateTimeString(); //2016-10-15 00:10:25 echo Carbon::parse('today')->toDateTimeString(); //2016-10-15 00:00:00 echo Carbon::parse('yesterday')->toDateTimeString(); //2016-10-14 00:00:00 echo Carbon::parse('tomorrow')->toDateTimeString(); //2016-10-16 00:00:00 echo Carbon::parse('2 days ago')->toDateTimeString(); //2016-10-13 20:49:53 echo Carbon::parse('+3 days')->toDateTimeString(); //2016-10-18 20:49:53 echo Carbon::parse('+2 weeks')->toDateTimeString(); //2016-10-29 20:49:53 echo Carbon::parse('+4 months')->toDateTimeString(); //2017-02-15 20:49:53 echo Carbon::parse('-1 year')->toDateTimeString(); //2015-10-15 20:49:53 echo Carbon::parse('next wednesday')->toDateTimeString(); //2016-10-19 00:00:00 echo Carbon::parse('last friday')->toDateTimeString(); //2016-10-14 00:00:00
날짜가 두 날짜 사이에 있는지 확인하려면 between() 메서드를 사용할 수 있습니다. 세 번째 선택적 매개변수는 비교가 동일할 수 있는지 여부를 지정합니다.
$year = '2015'; $month = '04'; $day = '12'; echo Carbon::createFromDate($year, $month, $day); //2015-04-12 20:55:59 $hour = '02'; $minute = '15': $second = '30'; 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('+15 days'); //2016-10-30 14:00:01 echo Carbon::now()->modify('-2 days'); //2016-10-13 14:00:01
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('zh'); }
设置好之后,在输出时间的地方调用:
$article->created_at->diffForHumans();
类似的格式即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
如何解决PHP基于DateTime类Unix时间戳与日期互转的问题
关于laravel 5.1下php artisan migrate的使用
위 내용은 Laravel의 날짜 및 시간 처리 패키지 Carbon 사용에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!