DateTime을 문자열 PHP로 변환


225

PHP DateTime 객체를 String으로 변환하는 방법에 대한 많은 사이트를 이미 연구했습니다. "DateTime to String"이 아닌 "String to DateTime"이 항상 표시됩니다.

PHP DateTime을 에코 할 수는 있지만 PHP 문자열 함수로 DateTime을 처리하려고합니다.

내 질문은 PHP dateTime Object를 이런 종류의 코드에서 시작하는 문자열로 만드는 방법입니다.

$dts = new DateTime(); //this returns the current date time
echo strlen($dts);

2
문자열 함수로 DateTime을 처리하려는 이유는 무엇입니까? 무엇을 이루려고 노력하고 있습니까?
mgiuffrida

2
어떤 종류의 날짜 시간 유효성 검사기? PHP에서
Netorica

답변:


413

클래스 의 format메소드를 사용할 수 있습니다 DateTime.

$date = new DateTime('2000-01-01');
$result = $date->format('Y-m-d H:i:s');

경우 format어떤 이유로 실패가 반환됩니다 FALSE. 일부 응용 프로그램에서는 실패한 경우를 처리하는 것이 좋습니다.

if ($result) {
  echo $result;
} else { // format failed
  echo "Unknown Time";
}

3
+1 작동합니다. 이 변환을 수행하기 전에 null (동일한 줄)을 확인하는 방법도 알려주십시오. 감사!
Watt

2
안녕하세요 @Watt, 좋은 지적입니다! 실패 사례를 처리하는 방법을 보여주기 위해 예제를 확장했습니다.
rjz

3
대신 사용 시간대를 잊어 버렸 $date->format('c')거나 $date->format('Y-m-d H:i:s Z')또는$date->format('Y-m-d H:i:s T')
티모 Huovinen

1
-> 형식을 사용하려면 어떤 using 문이 필요합니까? 젠드에서 뭔가
Chemist

1
$result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');PHP 5.4부터이 짧은 형식을 사용할 수 있습니다 . 여기를보십시오 : docs.php.net/manual/en/migration54.new-features.php 인스턴스화에 대한 클래스 멤버 액세스가 추가되었습니다 (예 : (new Foo)-> bar ()).
FFirmenich

17

내가 찾은 가장 간단한 방법은 다음과 같습니다.

$date   = new DateTime(); //this returns the current date time
$result = $date->format('Y-m-d-H-i-s');
echo $result . "<br>";
$krr    = explode('-', $result);
$result = implode("", $krr);
echo $result;

도움이 되길 바랍니다.



15

다음 date_d.phpformat같이 사용할 사전 정의 된 형식 이 있습니다 .

define ('DATE_ATOM', "Y-m-d\TH:i:sP");
define ('DATE_COOKIE', "l, d-M-y H:i:s T");
define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
define ('DATE_RFC822', "D, d M y H:i:s O");
define ('DATE_RFC850', "l, d-M-y H:i:s T");
define ('DATE_RFC1036', "D, d M y H:i:s O");
define ('DATE_RFC1123', "D, d M Y H:i:s O");
define ('DATE_RFC2822', "D, d M Y H:i:s O");
define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
define ('DATE_RSS', "D, d M Y H:i:s O");
define ('DATE_W3C', "Y-m-d\TH:i:sP");

다음과 같이 사용하십시오.

$date = new \DateTime();
$string = $date->format(DATE_RFC2822);

3
DateTime 상수 (예 : DateTime :: ISO8601)를 사용하면 코드를보다 쉽게 ​​읽을 수 있습니다.
Anh-Tuan Mai

2

리스트를 사용하는 더 짧은 방법. 그리고 각 날짜 구성 요소로 원하는 것을 할 수 있습니다.

list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;

2

그것은 나를 위해 일했다

$start_time   = date_create_from_format('Y-m-d H:i:s', $start_time);
$current_date = new DateTime();
$diff         = $start_time->diff($current_date);
$aa           = (string)$diff->format('%R%a');
echo gettype($aa);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.