2011-12-20 3 views
0

세계 시간대 & GMT로 작업하는 것에 관한 간단한 질문.PHP로 국제 시간 지정하기

GMT + - 시간/지역에 따라 국제적으로 모든 사람에게 특정 시간 (오전 6시)에 이메일을 발송해야하는 앱이 있습니다. 나는 이것이 GMT & 시간대로 어떻게 처리되어야하는지에 대한 손실을보고있다. 모든 입력을 부탁드립니다.

답변

1

순진 더 referecnce를 들어

, 당신은 수집 (또는 somehow determine) 사용자 각각에 대해 시간대 ID (tzid)를, 단순히 모든 UTC 시간이 경우 검사의 상단에 cron 작업을 실행할 수 있습니다 현재 시간은 해당 지역에서 06:00입니다.

America/St_Johns (UTC-03 : 30) 및 Asia/Kathmandu (UTC + 05 : 미국 시간)와 같이 UTC에서 전체 시간 오프셋이없는 여러 시간대가 있기 때문에 쉽지 않습니다. 45),이 사용자는 cron을 매 시간 만 실행하면 이메일을받지 못합니다. 그래서 당신은 안전한면에 있기 위해 매 분기마다 cron을 돌릴 수 있습니다. cron 작업은 종종 그들이 실행하도록 예약하고 후 몇 초 시작부터

, 당신은 6시 0분 0초와 평등을 테스트 할 수 없습니다. 또한 시간대에는 이 포함되지 않으므로 (고맙게도 일반적으로 인식되는 모든 영역이 다행히도), 현명하기 때문에 현재 시간이 특정 창 내에 있는지 평가할 수 있습니다.

예를 들어, 15 분마다 cron을 실행하는 경우 가장자리 상자를 잡으려면 해당 창을 15 분 (, 05:55 ~ 06:10)으로 만드십시오. 아직 cron 실행을 건너 뛸 수있는 이론적 인 기회가 있습니다 ... 그러나 누군가가 아직 오늘의 이메일을 보냈는지 여부를 나타내는 추가 데이터를 저장하지 않으면 (그리고 그렇지 않은 경우 차이를 보완합니다. 할수있다.

+0

아주 재미 있습니다. 정확히 제가 온 결론입니다. 비록 내가 336 입력 (30 분마다, 시간 참조로 주 7 일.) 테이블에 데이터베이스를 가지고 있지만, 보내는 15 분마다 실행중인 크론과 업데이트하기 전에 6 시간 동안 모두 실행되는 다른 Olson 데이터베이스를 사용하여 TZ로 변환 한 다음 6 시간. 모든 것을 추적합니다. – wesside

0

사용자가 6am 어딘가에있을 경우 매 시간마다 cron을 실행하여 확인할 수 있습니다.

+0

방금 ​​GMT 표준으로 변환 할 수있는 CONVERT_TZ()에 대한이 MySQL 함수를 발견했습니다. 그것이 효과가 있다고 생각하십시오. – wesside

+2

이것은 가장 쉬운 방법이지만, 모든 시간대가 한 시간 씩 이동하는 것은 아니며, 일부 시간은 한 시간 씩 이동한다는 것을 기억하십시오. 다른 사람들이 다른지 확실하지 않습니다. – loganfsmyth

1

당신은 같은

아래 date_default_timezone_set ('미국/로스 엔젤레스')로 PHP 시간대 설정 기능을 사용할 수 있습니다;

이 기능을 사용하면 사용자의 시간을 알 수 있습니다. 이것을 바탕으로 이메일을 보낼 수 있습니다. date_default_timezone_set

+0

당신은 또한 PHP가 지원하는 표준 시간대 목록을 찾을 수 있습니다. http://www.php.net/manual/en/timezones.php –