비즈니스에 중요한 기능은 구독, 반복 결제, 예약 등 날짜에 의존하는 경우가 많습니다.
PHP 프로그래머라면 날짜/시간을 조작해야 할 수도 있습니다.
일반적으로 기본 API를 사용하여 기술을 익히고 언어 작동 방식을 이해하는 것이 좋지만 실용적으로 생각합시다.
Carbon은 DateTimeInterface, JsonSerialized 및 기타 기본 PHP 도구를 확장하는 강력한 라이브러리입니다.
기존 날짜 개체와 새 날짜 개체를 모두 조작하는 데 유용한 도우미를 제공합니다.
// Tomorrow CarbonImmutable::now()->add(1, 'day'); // Copy instance from another API $dateTime = new \DateTime('first day of January 2025'); $carbon = Carbon::instance($dateTime); // Parsing values $date = Carbon::parse('2050-01-01 12:34:00', 'UTC');
Carbon은 기본 API를 확장하지만 DateTime 개체는 이미 날짜와 시간을 계산하는 도구를 제공합니다.
$date = new DateTime('2024-07-23'); $date->add(new DateInterval('P10D')); echo $date->format('Y-m-d'); $date2 = new DateTime('2024-08-03'); $interval = $date->diff($date2); echo $interval->format('%R%a days');
문자열을 전달하여 특정 출력을 얻거나 간격과 기간을 계산할 수 있습니다.
$yesterday = Carbon::yesterday(); $today = Carbon::today(); $now = Carbon::now(); $tomorrow = Carbon::tomorrow(); $futureDate = Carbon::today()->addDays(21)->format('Y-m-d'); if ($now->isEndOfDay()) { // Some code }
라이브러리는 다양한 오류가 발생하기 쉬운 날짜 비교에 편리하고 강력합니다.
Carbon은 로캘을 편리하게 처리합니다.
$now = Carbon::now()->locale('fr_FR'); echo $now->monthName;
월을 더하거나 뺄 때 기본 PHP DateTime 동작이 오해를 불러일으킬 수 있습니다. 넘칠 수 있어요!
때때로 이러한 동작이 필요할 수도 있지만 Carbon은 더 나은 제어 기능을 제공합니다.
Carbon::useMonthsOverflow(false); Carbon::resetMonthsOverflow();
연도 또는 월을 조작할 때 각 메서드에서 오버플로를 구성할 수도 있습니다(예: subMonthsNoOverflow, addMonthsWithOverflow).
날짜는 가변성으로 인해 단위 테스트에서 문제가 될 수 있습니다.
Carbon은 모의를 위한 고급 기능을 제공하여 테스트가 일관되고 안정적으로 유지되도록 보장합니다.
이렇게 하면 CI/CD 파이프라인을 손상시킬 수 있는 무작위 오류를 방지할 수 있습니다.
Carbon 사용 여부에 관계없이 잠재적인 버그와 불일치를 줄이는 실용적인 방법이 있습니다.
최신 버전의 PHP에는 더 나은 날짜/시간 예외가 도입되어 예기치 않은 입력을 보다 일관되게 포착할 수 있습니다.
그러나 구현을 통해 때때로 나쁜 오류가 발생하지 않을 수 있습니다.
$dateInput = '2dsds'; $timestamp = strtotime($dateInput); echo date('Y-m-d', $timestamp); // Defaults back to 1970-01-01
다음 코드는 DateTime 객체를 사용하더라도 개선되지 않습니다.
$dateInput = '2024-02-30'; // Invalid date (February has 28 days, 29 at most) $date = new DateTime($dateInput); echo $date->format('l \t\h\e jS F'); // Outputs "Friday the 1st March"
그러므로 항상 날짜/시간을 확인하세요.
$dateInput = '2dsds'; $timestamp = strtotime($dateInput); if (false === $timestamp) { throw new InvalidArgumentException(); } echo date('Y-m-d', $timestamp);
입력 내용을 자세히 확인하세요.
$format = 'Y-m-d'; $dateInput = '2024-02-30'; $dateInfo = date_parse($dateInput); if (!checkdate($dateInfo['day'], $dateInfo['month'], $dateInfo['year'])) { throw new InvalidArgumentException(); } $date = DateTimeImmutable::createFromFormat($format, $dateInput); echo $date->format('l \t\h\e jS F');
DateTimeImmutable 또는 CarbonImmutable은 생성 후에 변경할 수 없습니다. 대부분의 경우 초기 날짜를 변경할 필요가 없습니다.
코드의 다른 부분이 해당 인스턴스에 의존하는 경우 불쾌한 버그가 발생할 수 있습니다.
불변 형식은 이러한 부작용을 방지하며 일반적으로 가독성과 테스트에 더 좋습니다.
시간대를 무시하는 것은 위험합니다.
앱에 기본 시간대를 지정하지 않으면 서버가 이를 결정합니다.
그러나 귀하의 애플리케이션은 다른 시간대의 서버에 배포될 수 있습니다.
일광 절약 시간제나 저장 형식(예: UTC 대 현지 시간)과 같은 복잡성으로 인해 어려움을 겪을 수도 있지만 모범 사례를 장려하는 라이브러리를 사용하면 문제가 덜할 수 있습니다.
네이티브 API를 사용하면 날짜와 시간에 대한 고급 조작이 가능하며 Carbon은 이를 훌륭하게 확장합니다.
PHP 개발자는 이 추가 레이어를 활용하여 계산을 단순화하고 가독성을 높일 수 있습니다.
사용 여부에 관계없이 기본 PHP DateTime 객체의 기본 동작을 이해해야 합니다.
위 내용은 PHP: Dates의 지옥에서 탈출하는 실용적인 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!