우리는 사람들이 다른 플레이어에게 도전하기 위해 시합 시간을 선택할 수있는 전투 시스템을 가지고 있습니다. 일치 항목을 만들려면 사용자가 날짜를 선택해야합니다. 현재 사용자는 드롭 다운 목록에서 요일, 시간, 분 및시/분을 선택합니다. 사용자가 5/20/2012 @ 1PM을 선택하면 시스템은 하루의 시작부터 시간과 분을 추가합니다.PHP 날짜 및 타임 스탬프가있는 조언
이$time = strtotime('today', $inputdate);
$time = $time + $hours + $minutes;
사용자의 경우 $hours
값이 변경이 오전 또는 오후 선택 : 여기에 내가 무슨 말을 더 잘 이해를 얻을 수있는 빠른 샘플입니다. 그것은 꽤 기본입니다 :
사람들이 시작한 시간대 문제가있을 때까지 모든 것이 잘 작동했습니다. 예를 들어, 플레이어 A가 오후 1시에 성냥을 만들면 플레이어 B는 오후 1시에 경기가 시작되는 것을 보게되지만 다른 시간대를 갖게됩니다!/
나는 시간대의 문제를 해결하는 방법을 알고하지 않습니다
문제
내가 문제를 알 수 없다는 것입니다. 나는 모든 것이 함께 무너지기를 기대하면서 기능을 창조해 왔지만 행운은 없다.내가 무엇을 가지고 :
- 사용자 프로필이 시간대 옵션이 있습니다.
- 원시 시간 소인을 가져 와서 사용자의 시간대를 기준으로 형식화 된 시간을 반환하는 함수입니다.
- 타임 스탬프를 가져와 사용자의 시간대에 따라 다른 타임 스탬프 으로 변환하는 함수입니다.
나는 잃어 버렸고 문제를 해결할 수없는 것처럼 보였습니다.하지만 지금은 논리적이라고 생각하지 않습니다. 나는 이것을 쓰기 위해 1 시간이 걸렸고 어떻게 할 수 있는지 설명하려고 노력했다. 왜냐하면 나 자신이 그것을 작동하게하는 방법을 모른다. 몇 가지 조언을 부탁드립니다.
나는 UTC-5에 타임 스탬프를 변환하는 기능이 필요합니다 데이터베이스에
function input_date($timestamp)
{
global $vbulletin;
$timestamp = (int)$timestamp;
if (strlen((string)$timestamp) == 10)
{
$hour = 3600.00;
$offset = $vbulletin->userinfo['timezoneoffset'];//sample -8
$ds = (int)$vbulletin->userinfo['dstonoff'];//DST
$fluff = $hour*($offset+5.00);
$timestamp = $timestamp+$fluff+($ds*$hour);
return $timestamp;//return timestamp in UTC-5 format..
}
else
{
return 0;
}
}
일관된 시간대에 모든 데이터를 저장하십시오 (UTC는 이동해야합니다). 그런 다음 사용자의 시간대를 표시 할 때만 사용자의 시간대를 계산하십시오. – cmbuckley
다른 표준 시간대로 저장하면 차이가 있습니까? – user962449
아니지만 천천히 미쳐 갈 수 있습니다 .--) UNIX 타임 스탬프 (strtotime의 결과)를 저장하면 시간대 정보없이 저장합니다. – cmbuckley