Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP date_isodate_set() 함수 – ISO 날짜 설정 방법과 예제 총정리

date_isodate_set() 함수란?

PHP의 date_isodate_set() 함수는 DateTime 객체에 ISO-8601 표준 형식으로 날짜를 설정합니다. 즉, 연도·주·요일 세 가지 값을 기준으로 원하는 날짜를 지정할 수 있습니다. 이 함수는 절차형(procedural) 스타일이며, 객체지향 방식에서는 동일한 기능을 하는 DateTime::setISODate() 메서드를 사용합니다.

함수는 실행에 성공하면 NULL을 반환하고, 실패하면 FALSE를 반환합니다.

구문

date_isodate_set(object, year, week, day)

매개변수

  • object − 날짜를 설정할 DateTime 객체입니다.

  • year − 설정하려는 날짜의 연도입니다.

  • week − 설정하려는 날짜의 주(ISO 주차)입니다.

  • day − 해당 주의 요일입니다. 생략할 수 있으며, 기본값은 1(월요일)입니다.

반환값

date_isodate_set() 함수는 성공 시 NULL, 실패 시 FALSE를 반환합니다.

예제 1

다음은 date_isodate_set() 함수와 setISODate() 메서드를 각각 사용해 새로운 날짜를 설정하는 예제입니다.

<?php
   $dateSrc = '2018-10-11 11:15 GMT';
   $dateTime = date_create($dateSrc);

   # date_isodate_set() 함수로 새 날짜 설정
   date_isodate_set($dateTime, 2000, 12, 12);
   echo "New Formatted date = ". $dateTime->format("Y-m-d\\TH:i:s\\Z");
   echo "<br />";

   # 두 번째 방법: 객체지향 방식 사용
   $dateTime = new DateTime($dateSrc);
   $dateTime->setISODate(1999, 10, 12);
   echo "New Formatted date is ".
   $dateTime->format("Y-m-d\\TH:i:s\\Z");
?>

출력 결과

New Formatted date = 2000-03-31T11:15:00Z
New Formatted date is 1999-03-19T11:15:00Z

ISO 연도 2000년의 12주차 시작일(월요일)은 3월 20일이므로, 여기서 12번째 날(11일 후)인 3월 31일이 결과로 출력됩니다. 마찬가지로 1999년 10주차의 12번째 날은 3월 19일입니다. 원래 날짜의 시간 정보(11:15)는 그대로 유지되는 점도 확인할 수 있습니다.

예제 2

다음은 day 매개변수를 생략한 예제입니다. 이 경우 기본값인 월요일(1)이 자동으로 적용됩니다.

<?php
   $d = date_create();
   date_isodate_set($d, 2017, 9);
   echo date_format($d, "Y-m-d");
?>

출력 결과

2017-02-27

2017년 9주차의 월요일은 2월 27일이므로 위와 같은 결과가 출력됩니다.

참고 사항

  • ISO-8601 표준에서 한 주는 월요일에 시작하여 일요일에 끝납니다.
  • day 값은 일반적으로 1(월요일)~7(일요일) 범위를 사용하지만, 범위를 벗어나는 값도 허용되며 초과된 만큼 날짜가 자동으로 계산됩니다.
  • 이 함수는 날짜만 변경하며, 기존 DateTime 객체에 설정된 시간 정보는 변경되지 않습니다.