Menu
Coddy logo textTech

DateTime 객체 수정하기

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 50번째.

DateTime 객체를 생성한 후에는, 다른 시점을 나타내도록 변경해야 하는 경우가 많습니다. modify() 메서드를 사용하면 자연어 표현을 사용하여 DateTime 객체에서 시간을 더하거나 뺄 수 있어, 날짜 계산을 직관적이고 읽기 쉽게 만들어 줍니다.

modify() 메서드는 '+1 day', '-2 weeks', 또는 'next Friday'와 같이 strtotime()과 함께 작동하는 동일한 유형의 문자열을 허용합니다. 매번 새로운 객체를 생성하는 것과 달리, 이 메서드는 기존 DateTime 객체를 직접 수정하므로 순차적인 날짜 연산에 효율적입니다.

<?php
$date = new DateTime();
echo $date->format('Y-m-d');  // 오늘의 날짜

$date->modify('+1 week');
echo $date->format('Y-m-d');  // 오늘부터 1주일 후

$date->modify('-3 days');
echo $date->format('Y-m-d');  // 오늘부터 4일 후
?>

이 접근 방식은 날짜 계산에 있어 강력한 유연성을 제공합니다. 여러 수정을 체이닝하거나 '+2 months -1 day'와 같은 복잡한 표현식을 사용하여 코드를 명확하고 유지 관리하기 쉽게 유지하면서 정교한 날짜 연산을 수행할 수 있습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

challenge icon

챌린지

쉬움

두 개의 입력을 받게 됩니다: Y-m-d H:i:s 형식의 날짜 문자열과 수정 문자열입니다. 첫 번째 입력은 특정 날짜와 시간(예: 2024-03-15 14:30:25)이며, 두 번째 입력은 +1 week, -3 days, 또는 +2 months와 같은 수정 표현식입니다.

두 입력을 모두 읽고, 날짜 문자열을 사용하여 DateTime 객체를 생성한 다음, modify() 메서드를 사용하여 DateTime 객체에 수정 표현식을 적용하고, 수정된 날짜를 Y-m-d H:i:s 형식으로 출력하세요.

입력 형식:

  • 첫 번째 줄: Y-m-d H:i:s 형식의 날짜 문자열 (예: 2024-03-15 14:30:25)
  • 두 번째 줄: 수정 문자열 (예: +1 week 또는 -3 days 또는 +2 months)

예상 출력: Y-m-d H:i:s 형식으로 포맷된 수정된 날짜

치트 시트

modify() 메서드를 사용하면 자연어 표현을 사용하여 DateTime 객체에서 시간을 더하거나 뺄 수 있습니다:

<?php
$date = new DateTime();
$date->modify('+1 week');     // 1주일 추가
$date->modify('-3 days');     // 3일 빼기
$date->modify('+2 months -1 day'); // 복합 표현식
?>

이 메서드는 기존 DateTime 객체를 직접 수정하며, strtotime()과 동일한 문자열 형식(예: '+1 day', '-2 weeks', 또는 'next Friday')을 허용합니다.

직접 해보기

<?php
// 날짜 문자열 읽기
$dateString = trim(fgets(STDIN));

// 수정 문자열 읽기
$modificationString = trim(fgets(STDIN));

// TODO: 아래에 코드를 작성하세요
// DateTime 객체를 생성하고, 수정을 적용한 후, 결과를 형식화합니다


// 수정된 날짜 출력
echo $modifiedDate;
?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨