PHP의 date () 함수를 사용하여 UTC / GMT +/- 타임 스탬프를 얻으려면 어떻게해야합니까? 예를 들어 내가 시도하면
date("Y-m-d H:i:s", time());
나는 유닉스 타임 스탬프를 얻을 것이다. 하지만 현지 타이밍에 따라 GMT / UTC +/- 0400 또는 GMT / UTC +/- 1000 문자열로 UTC / GMT 타임 스탬프를 가져와야합니다.
PHP의 date () 함수를 사용하여 UTC / GMT +/- 타임 스탬프를 얻으려면 어떻게해야합니까? 예를 들어 내가 시도하면
date("Y-m-d H:i:s", time());
나는 유닉스 타임 스탬프를 얻을 것이다. 하지만 현지 타이밍에 따라 GMT / UTC +/- 0400 또는 GMT / UTC +/- 1000 문자열로 UTC / GMT 타임 스탬프를 가져와야합니다.
답변:
를 사용 gmdate
하면 항상 GMT 날짜가 반환됩니다. 구문은 for와 동일합니다 date
.
gmdate("U") == time()
.) 잠재적으로 버그가있는 동작처럼 들립니다. PHP 프로젝트로 버그를 다시 확인하고 제출하십시오.
time()
이 "Unix Epoch 이후 (1970 년 1 월 1 일 00:00:00 GMT)"를 반환합니다. 참고 GMT
. 기본적으로 시스템 이이를 표시하기 위해 시간대 로 변환 한다는 사실 은 사용자 편의입니다. 내부적으로는 항상 GMT입니다.
간단한 gmdate () 이면 충분합니다.
<?php
print gmdate("Y-m-d\TH:i:s\Z");
이전에 여기에 대답 했듯이 PHP 5.2.0부터 DateTime
클래스를 사용하고 인스턴스로 UTC 시간대를 지정할 수 있습니다 DateTimeZone
.
DateTime __construct () 문서 에서는 DateTime 인스턴스를 만들고 현재 시간을 가져 오기 위해 시간대를 지정할 때 첫 번째 매개 변수로 "now"를 전달하도록 제안합니다.
$date_utc = new \DateTime("now", new \DateTimeZone("UTC"));
echo $date_utc->format(\DateTime::RFC850); # Saturday, 18-Apr-15 03:23:46 UTC
DateTime
입니까? 직접 실행하면 그들 없이는 잘 작동하는 것 같습니다.
namespace A
의 맨 위에 선언이 있다고 가정 DateTime
하면 PHP 는를 참조하는 것으로 간주 합니다 A\DateTime
. 이는 잘못된 것입니다. 백 슬래시를 추가하면 문제가 해결됩니다. 제 생각에는 아직 네임 스페이스를 사용하지 않더라도 사용하는 것이 좋은 습관입니다.
$time = time();
$check = $time+date("Z",$time);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $check);
UTC 날짜 얻기
gmdate("Y-m-d H:i:s");
UTC 타임 스탬프 얻기
time();
결과는 date_default_timezone_set
코드에 있어도 다르지 않습니다 .
호출하는 gmdate
것 외에 나머지 코드 앞에이 코드를 넣을 수도 있습니다.
<?php
date_default_timezone_set("UTC");
?>
그러면 나머지 날짜 / 시간 관련 호출이 GMT / UTC 시간대를 사용합니다.
현지 타이밍에 따라 GMT / UTC +/- 0400 또는 GMT / UTC +/- 1000 문자열 사용
현지 시간에서 시간대 오프셋을 제공하기 위해 맞춤 형식 이 누락되었습니다 O
.
그리니치 시간 (GMT)과의 차이 (시간) 예 : +0200
date_default_timezone_set('America/La_Paz');
echo date('Y-m-d H:i:s O');
2018-01-12 12:10:11 -0400
그러나 최대한의 이식성 / 상호 운용성을 위해 ISO8601 날짜 형식을 사용하는 것이 좋습니다.c
date_default_timezone_set('America/La_Paz');
echo date('c');
2018-01-12T12 : 10 : 11-04 : 00
date_default_timezone_set('Australia/Brisbane');
echo date('c');
2018-01-13T02 : 10 : 11 + 10 : 00
또한 사용할 수 있으며 gmdate
시간대 오프셋 문자열은 항상+00:00
date_default_timezone_set('America/La_Paz');
echo gmdate('c');
2018-01-12T16 : 10 : 11 + 00 : 00
date_default_timezone_set('Australia/Brisbane');
echo gmdate('c');
2018-01-12T16 : 10 : 11 + 00 : 00
다음을 사용하여 UTC 시간을 얻을 수 있습니다.
date_default_timezone_set('Asia/Calcutta');
$current_date = date("Y/m/d g:i A");
$ist_date = DateTime::createFromFormat(
'"Y/m/d g:i A"',
$current_date,
new DateTimeZone('Asia/Calcutta')
);
$utc_date = clone $ist_date;
$utc_date->setTimeZone(new DateTimeZone('UTC'));
echo 'UTC: ' . $utc_date->format('Y-m-d g:i A');
/**
* Converts a local Unix timestamp to GMT
*
* @param int Unix timestamp
* @return int
*/
function local_to_gmt($time = '')
{
if ($time === '')
{
$time = time();
}
return mktime(
gmdate('G', $time),
gmdate('i', $time),
gmdate('s', $time),
gmdate('n', $time),
gmdate('j', $time),
gmdate('Y', $time)
);
}
아래에서 현재 UTC (협정 세계시) 시간을 가져 오는 PHP 코드를 찾으십시오.
<?php
// Prints the day
echo gmdate("l") . "<br>";
// Prints the day, date, month, year, time, AM or PM
echo gmdate("l jS \of F Y h:i:s A");
?>