PHP의 Date Time 클래스에서 Date Time-> date에 액세스할 수 없는 이유는 무엇입니까?
「 」의 DateTime
class, class, class, class command가 됩니다.
$mydate = new DateTime();
echo $mydate->date;
이 에러 메세지가 반환됩니다.
주의: 미정의 속성: DateTime::$date...
안 돼요.실행할 는 말이 안 돼요var_dump()
''로$mydate
이 속성은 존재하며 공개적으로 액세스할 수 있음을 나타냅니다.
var_dump($mydate);
object(DateTime)[1]
public 'date' => string '2012-12-29 17:19:25' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'UTC' (length=3)
이것은 PHP의 버그입니까, 아니면 제가 잘못하고 있는 것입니까?PHP 5.4.3을 사용하고 있습니다.
입니다.
var_dump()
@php.net –derick@php.net– derick@php.net
할 수 있습니다만, 숙박업소에는 접속할 수 없습니다.var_dump
어쨌든 보여줘요.이 형식으로 날짜를 가져오려면 함수를 사용하십시오.
echo $mydate->format('Y-m-d H:i:s');
업데이트: PHP7.3에서 동작이 변경되어 원래 답변이 더 이상 작동하지 않습니다.모든 PHP 버전에서 동일한 결과를 얻으려면 다음과 같이 하십시오.>=7.3, 다음의 코드를 사용할 수 있습니다.
$dt = new DateTime();
$date = $dt->format('Y-m-d\TH:i:s.v');
참고로 원래 답변은 다음과 같습니다.
★★★★★★★★★를 호출하는 것 외에DateTime::format()
리플렉션을 사용하여 속성에 액세스할 수 있습니다.
<?php
$dt = new DateTime();
$o = new ReflectionObject($dt);
$p = $o->getProperty('date');
$date = $p->getValue($dt);
은 사용법보다 더 빠릅니다.format()
format()
는 이미 포맷된 타임링을 포맷합니다.이치노
그러나 이는 PHP의 문서화된 동작이 아니므로 언제든지 변경될 수 있습니다.
DateTime의 날짜 속성이 보호됩니다.
포맷 기능으로 날짜를 표시할 수 있습니다.
<?php
try {
$time = new DateTime();
echo($time->format("Y-m-d H:i:s"));
} catch (Exception $e) {
}
또는 어레이로 변환할 수 있습니다.
<?php
try {
$time = (array) new DateTime();
var_dump($time["date"]);
} catch (Exception $e) {
}
알 수 , 이지만, 만약 이 '부작용'인 경우, 'PHP'의 이라면, 'PHP'는 'PHP'입니다.var_dump()
★★★★★★★★★★★★★★★★★…
echo ((array) new DateTime())['date']; // Works in PHP 7.
내가 확신하는 것은 만약 그 특성이DateTime
우리가 사용하려고 했던 곳에서 사용할 수 있게 되었을 것입니다.그러나 많은 내부 클래스와 마찬가지로 그렇지 않으므로 코드를 수정하기 위해 "해키" 또는 "귀여운" 방법에 의존해서는 안 됩니다.대신 API를 사용해야 합니다.
echo (new DateTime())->format('Y-m-d H:i:s');
만족하지 못할 경우 클래스를 연장하거나 확장해 주는 Carbon을 사용할 수 있습니다.
echo (new Carbon())->toDateTimeString();
하면var_dump()
오브젝트의 가짜 출력을 만듭니다.
속성 날짜를 묻기 전에 var_Dump를 사용하면 모든 것이 정상적으로 작동합니다.
$mydate = new DateTime();
var_Dump($mydate);
echo '<br>';
echo $mydate->date;
이 기능은 다음과 같습니다.
object(DateTime)#1 (3) { ["date"]=> string(26) "2017-04-11 08:44:54.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "America/New_York" }
2017-04-11 08:44:54.000000
오브젝트에 대한 속성 날짜도 표시됩니다.나는 이 행동을 이해할 수 없다.var_Dump를 코멘트만 하면 다시 에러가 발생합니다.
언급URL : https://stackoverflow.com/questions/14084222/why-cant-i-access-datetime-date-in-phps-datetime-class
'programing' 카테고리의 다른 글
요소에 JavaScript의 클래스가 포함되어 있는지 확인하시겠습니까? (0) | 2023.01.20 |
---|---|
python을 사용하여 단순 XML 파일 만들기 (0) | 2023.01.20 |
django Forms에서 css 클래스를 정의합니다. (0) | 2023.01.20 |
Centos 6.5 X86_64에 MariaDB 설치 (0) | 2023.01.20 |
Argparse 옵션 위치 인수? (0) | 2023.01.20 |