현재 데이터베이스에 'time()'함수를 사용하여 시간을 저장하고 있습니다. 그러나 서버의 시간대를 사용하고 있으며 각 사용자가 자신의 시간대 (프로필에 설정된 시간)에 따라 시간을 확인하고 싶습니다.PHP : 서버 타임 스탬프를 사용자의 시간대로 어떻게 변환합니까?
어떻게 타임 스탬프 변환을 수행합니까? (그리고 타임 스탬프에서 타임 스탬프까지 읽을 수있는 시간이 아님)
현재 데이터베이스에 'time()'함수를 사용하여 시간을 저장하고 있습니다. 그러나 서버의 시간대를 사용하고 있으며 각 사용자가 자신의 시간대 (프로필에 설정된 시간)에 따라 시간을 확인하고 싶습니다.PHP : 서버 타임 스탬프를 사용자의 시간대로 어떻게 변환합니까?
어떻게 타임 스탬프 변환을 수행합니까? (그리고 타임 스탬프에서 타임 스탬프까지 읽을 수있는 시간이 아님)
투입 Joonas 말했듯이, UNIX 타임 스탬프는 정의 UTC으로,하지만 당신이 정말로 필요한 경우는 다음과 같이 함께 시간대 별 타임 스탬프를 모방하기 위해 해킹 수 :
이// PHP 5.3 - OO Code
$timestamp = time();
echo 'Unix timestamp: ' . $timestamp;
$dt = DateTime::createFromFormat('U', $timestamp);
$dt->setTimeZone(new DateTimeZone('America/New_York'));
$adjusted_timestamp = $dt->format('U') + $dt->getOffset();
echo ' Timestamp adjusted for America/New_York: ' . $adjusted_timestamp;
// PHP 5.3 - Procedural Code
$timestamp = time();
echo 'Unix timestamp: ' . $timestamp;
$dt = date_create_from_format('U', $timestamp);
date_timezone_set($dt, new DateTimeZone('America/New_York'));
$adjusted_timestamp = date_format($dt, 'U') + date_offset_get($dt);
echo ' Timestamp adjusted for America/New_York: ' . $adjusted_timestamp;
UNIX 타임 스탬프는 정의에 따라 UTC로 정의됩니다. 즉, 모든 변환은 실제 타임 스탬프가 아닌 인쇄하기 전에 수행되어야합니다.
그러나이를 수행하는 방법은 현재 서식을 지정하는 방법에 따라 다릅니다. 나는 PHP가 내장 된 시간대 처리 기능을 가지고 있다고 믿는다.
에 발견 다른 시간대. 데이터베이스의 타임 스탬프에 대해 많은 작업을 수행하므로 시간을 출력하는 모든 인스턴스에서 시간대를 반복해서 지정하는 것은 과로 한 작업입니다. – KeyStroke
정말 당신이 타임 스탬프를 해킹하지 않아야 그들 자신이 날짜를 변경하려면, 포맷 된 날짜 스탬프를 사용자에게 제시하기 전에 타임 스탬프에 시간대를 적용해야합니다.
이것은 PHP 5에 대한 작업을해야 마이크의 코드의 수정 된 버전> = 5.2.0 내가 몇 가지 기능을 찾았지만, 그들 중 누구도 A를 타임 스탬프 자체를 변환하지 php.net
// OO Code
$st = 1170288000 // a timestamp
$dt = new DateTime("@$st");
$dt->setTimeZone(new DateTimeZone('America/New_York'));
$adjusted_timestamp = $dt->format('U') + $dt->getOffset();
echo ' Timestamp adjusted for America/New_York: ' . $adjusted_timestamp;
// Procedural Code
$st = 1170288000 // a timestamp
$dt = date_create("@$st");
date_timezone_set($dt, timezone_open('America/New_York'));
$adjusted_timestamp = date_format($dt, 'U') + date_offset_get($dt);
echo ' Timestamp adjusted for America/New_York: ' . $adjusted_timestamp;
고마워,하지만이 '정의되지 않은 메서드 DateTime :: createfromformat() 호출'오류가 발생합니다. 어떻게 그것이 정의되지 않았다고 말하는거야? – KeyStroke
어떤 PHP 버전을 사용하고 있습니까? – Mike
이 코드는 아마 PHP 5.3이 필요합니다. –