DateTime::createFromFormat

date_create_from_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::createFromFormat -- date_create_from_format — 지정된 형식에 따라 시간 문자열을 구문 분석합니다.


설명

객체 지향 스타일

public static DateTime::createFromFormat(string $format, string $datetime, ?DateTimeZone $timezone = null): DateTime|false

절차적 스타일

date_create_from_format(string $format, string $datetime, ?DateTimeZone $timezone = null): DateTime|false

주어진 format으로 형식이 지정된 datetime 문자열로 지정된 날짜와 시간을 나타내는 새 DateTime 객체를 반환합니다.


매개변수

format
전달된 문자열의 형식입니다. 아래의 형식 지정 옵션을 참조하세요. 대부분의 경우 date()와 동일한 문자를 사용할 수 있습니다.

형식 매개변수 문자열에서 다음 문자가 인식됩니다.

format character 설명 구문 분석 가능한 값의 예
Day --- ---
d and j 날짜, 앞에 0이 있거나 없는 2자리 01 to 31 or 1 to 31
D and l 하루의 텍스트 표현 Mon through Sun or Sunday through Saturday
S 월의 영어 서수 접미사, 2자. 처리하는 동안 무시됩니다. st, nd, rd or th.
z 일(0부터 시작) 앞에 Y 또는 y가 와야 합니다. 0 through 365
Month --- ---
F and M 1월 또는 9월과 같은 월의 텍스트 표현 January through December or Jan through Dec
m and n 선행 0이 있거나 없는 월의 숫자 표현 01 through 12 or 1 through 12
Year --- ---
Y 연도의 전체 숫자 표현, 4자리 Examples: 1999 or 2003
y 연도를 나타내는 두 자리 숫자(1970-2069 범위에 있는 것으로 가정) Examples: 99 or 03 (which will be interpreted as 1999 and 2003, respectively)
Time --- ---
a and A 자오선 전과 자오선 후 am or pm
g and h 선행 0이 있거나 없는 12시간 형식의 시간 1 through 12 or 01 through 12
G and H 선행 0이 있거나 없는 시간의 24시간 형식 0 through 23 or 00 through 23
i Minutes with leading zeros 00 to 59
s Seconds, with leading zeros 00 through 59
v Milliseconds (up to three digits) Example: 12, 345
u Microseconds (up to six digits) Example: 45, 654321
Timezone --- ---
e, O, P and T 시간대 식별자 또는 시간 단위의 UTC와의 차이 또는 시간과 분 사이에 콜론이 있는 UTC와의 차이 또는 시간대 약어 Examples: UTC, GMT, Atlantic/Azores or +0200 or +02:00 or EST, MDT
Full Date/Time --- ---
U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) Example: 1292177455
Whitespace and Separators --- ---
(space) One space or one tab Example:
# One of the following separation symbol: ;, :, /, ., ,, -, ( or ) Example: /
;, :, /, ., ,, -, ( or ) The specified character. Example: -
? A random byte Example: ^ (Be aware that for UTF-8 characters you might need more than one ?. In this case, using * is probably what you want instead)
* 다음 구분 기호 또는 숫자까지 임의의 바이트 Example: * in Y-*-d with the string 2009-aWord-08 will match aWord
! 모든 필드(년, 월, 일, 시, 분, 초, 분수 및 시간대 정보)를 0과 같은 값으로 재설정합니다(시, 분, 초 및 분수는 0, 월 및 일은 1, 연도는 1970, 시간대는 UTC). 정보) Without !, all fields will be set to the current date and time.
| 아직 구문 분석되지 않은 경우 모든 필드(년, 월, 일, 시, 분, 초, 분수 및 시간대 정보)를 0과 같은 값으로 재설정합니다. Y-m-d| 년, 월 및 일을 구문 분석할 문자열에서 찾은 정보로 설정하고 시, 분 및 초를 0으로 설정합니다.
+ 이 형식 지정자가 있으면 문자열의 후행 데이터로 인해 오류가 발생하지 않고 대신 경고가 발생합니다. DateTime::getLastErrors()를 사용하여 후행 데이터가 있는지 여부를 확인합니다.

형식 문자열에 인식할 수 없는 문자가 있으면 구문 분석이 실패하고 반환된 구조에 오류 메시지가 추가됩니다. DateTime::getLastErrors()를 사용하여 오류 메시지를 쿼리할 수 있습니다.

format에 리터럴 문자를 포함하려면 백슬래시(\)로 이스케이프해야 합니다.

format에 문자가 포함되지 않은 경우 ! format에 지정되지 않은 생성된 시간 부분은 현재 시스템 시간으로 설정됩니다.

format! 문자가 포함되어 있으면 format에 제공되지 않은 생성된 시간 부분과 !의 왼쪽에 있는 값이 Unix 시대의 해당 값으로 설정됩니다.

유닉스 시대는 1970-01-01 00:00:00 UTC입니다.

datetime
시간을 나타내는 문자열입니다.
timezone
원하는 시간대를 나타내는 DateTimeZone 개체입니다.

timezone가 생략되거나 null이고 datetime에 시간대가 없으면 현재 시간대가 사용됩니다.

메모: datetime 매개변수가 UNIX 타임스탬프(예: 946684800)를 포함하거나 시간대(예: 2010-01-28T15:00:00+02:00)를 지정하는 경우 timezone 매개변수와 현재 시간대는 무시됩니다.


반환 값

new DateTime 인스턴스를 반환합니다. 실패 시 false를 반환합니다.


변경 로그

버전 설명
7.3.0 v format 지정자가 추가되었습니다.

Examples

예제 #1 DateTime::createFromFormat() 예제

객체 지향 스타일

                  
<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
?>
                  
                

절차적 스타일

                  
<?php
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
?>
                  
                

위의 예는 다음을 출력합니다.

2009-02-15
                

예제 #2 DateTime::createFromFormat()의 복잡성

                  
<?php
echo 'Current time: ' . date('Y-m-d H:i:s') . "\n";

$format = 'Y-m-d';
$date = DateTime::createFromFormat($format, '2009-02-15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

$format = 'Y-m-d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

$format = 'Y-m-!d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

$format = '!d';
$date = DateTime::createFromFormat($format, '15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Current time: 2010-04-23 10:29:35
Format: Y-m-d; 2009-02-15 10:29:35
Format: Y-m-d H:i:s; 2009-02-15 15:16:17
Format: Y-m-!d H:i:s; 1970-01-15 15:16:17
Format: !d; 1970-01-15 00:00:00
                

예제 #3 리터럴 문자가 있는 형식 문자열

                  
<?php
echo DateTime::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s');
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

23:15:03
                

기타