UNIX 타임 스탬프를 형식화 된 날짜 문자열로 변환


183

PHP를 사용하여 UNIX 타임 스탬프를 다음과 비슷한 날짜 문자열로 변환하려고합니다. 2008-07-17T09:24:17Z

어떻게 같은 타임 스탬프를 변환합니까 13336994392008-07-17T09:24:17Z?

답변:


321

이렇게 해보십시오 gmdate:

<?php
$timestamp=1333699439;
echo gmdate("Y-m-d\TH:i:s\Z", $timestamp);
?>

53
gmdate()GMT로 날짜 / 시간 을 반환 하지 마십시오 . date()현지 날짜 / 시간을 반환합니다.
Matt K

5
위의 의견은이 맥락에서 의미가 없습니다. 응답에 표시된대로 두 번째 매개 변수가있는 날짜를 시간 소인으로 사용하면 날짜가 현지 시간대로 인쇄되지 않습니다. 시간대 정보가 무시되어 날짜가 인쇄되므로 타임 스탬프에 시간대 정보가 없습니다. 두 번째 시간 소인 매개 변수가 1333699439 인 gmdate 및 날짜는 동일한 날짜 시간을 인쇄합니다.
Tinus Tate

1
@MattK : Z는 UTC를 나타내므로 의미가 있습니다. Tinus : Unix 타임 스탬프에는 시간대 오프셋이 포함되어 있지 않습니다. dategmdate의 출력은 (적어도 * 괜찬아에서) TZ 변수에 따라 달라질 것이다
거트 반 덴 베르크


이 답변에 형식이 다른 날짜를 UNIX 시간으로 변환하여 반대 문제에 대한 솔루션이 포함되어 있으면 좋을 것입니다.
Olle Härstedt

117

날짜 기능 사용 date ( string $format [, int $timestamp = time() ] )

date('c',time())ISO 8601 날짜로 변환하는 형식으로 사용 (PHP 5에 추가)-2012-04-06T12:45:47+05:30

date("Y-m-d\TH:i:s\Z",1333699439)얻기 위해 사용2012-04-06T13:33:59Z

날짜 함수가 지원하는 형식 중 일부는 다음과 같습니다.

<?php
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
?>

'c'로 특정 타임 스탬프를 어떻게 변환 할 수 있습니까? 예 : 1333699439
Utku Dalmaz

59-14400이 나던 작업 일 03 : ( "Ymd 일수 \ TH : 전 : S \ Z", 1333699439는) 내가 2012-04-06EDT04 있어요
Utku Dalmaz을

@Ahmet-문자열을 정의 할 때 큰 따옴표와 작은 따옴표 사용에 주목
Mark Baker

1
@ user2060451 백 슬래시가 앞에 오는 것은 결과 시간 문자열에 문자 그대로 표시됩니다.
verbumSapienti

1
@ user2060451 : Z는 UTC 시간을 나타냅니다 (이 경우 gmdate를 사용해야합니다 ...) 좋아하는 연구 자료에 대한 ISO8601 정보를 확인하십시오.
Gert van den Berg

56

PHP5.3을 사용한다고 가정하면 최신 날짜 처리 방법은 기본 DateTime 클래스를 사용하는 것 입니다. 현재 시간을 얻으려면 전화하십시오.

$currentTime = new DateTime();

특정 타임 스탬프에서 DateTime 객체를 만들려면 (즉, 지금은 아님)

$currentTime = DateTime::createFromFormat( 'U', $timestamp );

포맷 된 문자열을 얻으려면 다음을 호출 할 수 있습니다

$formattedString = $currentTime->format( 'c' );

참고 항목 여기 매뉴얼 페이지를


1
이로 특정 타임 스탬프를 어떻게 변환 할 수 있습니까? 예 : 1333699439
Utku Dalmaz

@Norse 물론 그의 게시물을 읽었습니다. 그가 필요한 모든 정보는 내 게시물에있었습니다. 그가해야 할 일은 DateTime 객체에 대한 PHP 문서를 읽는 것뿐입니다. 게시물을 더 명확하게 편집했습니다. DateTime 객체는 PHP를 사용하는 방법이며 모든 초보자는 사용하도록 권장해야합니다. 아직, 나는 그 답변을 제공 한 유일한 사람입니다. Btw 나는 당신의 의견이 약간 공격적이며 SO의 정신에 있지 않다는 것을 알았습니다.
liquorvicar

@Ahmetvardar이 링크는 모두 내가 제공 한 PHP 문서에 있지만 편집 내용을 참조하십시오. DateTime 객체 사용을 강력히 권장합니다. 시간대 등을 포함한 날짜 / 시간에 대한 훌륭한 지원을 제공합니다.
liquorvicar

18

정확한 결과를 얻으려면 기본 시간대를 설정하는 것이 매우 중요합니다

<?php
// set default timezone
date_default_timezone_set('Europe/Berlin');

// timestamp
$timestamp = 1307595105;

// output
echo date('d M Y H:i:s Z',$timestamp);
echo date('c',$timestamp);
?> 

온라인 변환 도움말 : http://freeonlinetools24.com/timestamp


2
ISO8601에서 Z시간대를 설정해야합니다, 그래서 그것은 UTC 시간임을 나타 내기 위해 사용된다UTC
버그 덴 거트 반

11
<?php
$timestamp=1486830234542;
echo date('Y-m-d H:i:s', $timestamp/1000);
?>

6
나누기 부분없이 작동합니다. 그렇지 않으면 날짜는 기본적으로 1970으로 설정됩니다.
Script47


1

이 대화의 정보가 너무 도움이되어 MySQL 데이터베이스의 타임 스탬프와 약간의 PHP를 사용하여 알아내는 방법을 추가하고 싶었습니다.

 <?= date("Y-m-d\TH:i:s\+01:00",strtotime($column['loggedin'])) ?>

출력 : 2017-03-03T08 : 22 : 36 + 01 : 00

Stewe가 대답 한 대단히 감사합니다.


0

당신은 .....처럼 할 수 있습니다

$originalDate = "1585876500";

echo $newDate = date("Y-m-d h:i:sa", date($originalDate));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.