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


183

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

어떻게 같은 타임 스탬프를 변환합니까 1333699439에 2008-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 타임 스탬프에는 시간대 오프셋이 포함되어 있지 않습니다. date및 gmdate의 출력은 (적어도 * 괜찬아에서) 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.