Log in

View Full Version : Timezone off hours help requested


Boofo
05-02-2004, 12:27 PM
Can someone please help me use the following code to show the correct times for the off hours (i.e 3.5) and well as the whole hours? The whole hours work fine but the off hours show up as full hour times.

$timezones[-12] = "Eniwetok, Kwajalein";
$timezones[-11] = "Midway Islands, American Samoa, Gilbert Islands";
$timezones[-10] = "[Hawaii] Honolulu, Chatham Island, Papeete, Tahiti, Cook Islands";
$timezones[-9] = "[Alaska] Anchorage, Juneau";
$timezones[-8] = "[Pacific Time (US & Canada)] Los Angeles, Seattle, San Fransisco, Vancouver";
$timezones[-7] = "[Mountain Time (US & Canada)] Denver, Phoenix, Edmonton, Aklavik";
$timezones[-6] = "[Central Time (US & Canada)] Chicago, New Orleans, Houston, Winnipeg, St. Paul, Mexico City";
$timezones[-5] = "[Eastern Time (US & Canada)] New York, Miami, Boston, Atlanta, Montreal, Toronto, Lima, Bogota ";
$timezones[-4] = "[Atlantic Time (Canada)] Halifax, Caracas, La Paz, San Juan";
$timezones[-3.5] = "Newfoundland";
$timezones[-3] = "Brazil, Buenos Aires, Georgetown, Santiago, Asuncion, St. John's, Montevideo";
$timezones[-2] = "[Mid-Atlantic] Sao Paulo, Rio de Janeiro, Sandwich Islands";
$timezones[-1] = "Azores, Cape Verde Islands";
$timezones[0] = "[Western Europe Time] London, Lisbon, Dublin, Reykjavik, Casablanca";
$timezones[1] = "[CET(Central Europe Time)] Brussels, Rome, Paris, Amsterdam, Oslo, Z?rich, Madrid, Berlin";
$timezones[2] = "[EET(Eastern Europe Time)] Helsinki, Athens, Johannesburg, South Africa, Minsk, Cairo, Jerusalem";
$timezones[3] = "Moscow, St. Petersburg, Nairobi, Riyadh, Baghdad, Khartoum, Kuwait City, Addis Ababa";
$timezones[3.5] = "Tehran";
$timezones[4] = "Dubai, Abu Dhabi, Tbilisi, Muscat, Baku";
$timezones[4.5] = "Kabul";
$timezones[5] = "Ekaterinburg, Islamabad, Karachi, Tashkent";
$timezones[5.5] = "Bombay, Calcutta, Madras, New Delhi";
$timezones[6] = "Almaty, Dhaka, Colombo";
$timezones[7] = "Bangkok, Djakarta, Hanoi, Saigon, Phnom Penh, Christmas Island, Jakarta";
$timezones[8] = "Perth, Singapore, Beijing, Manila, Hong Kong, Taipei, Kuala Lumpur";
$timezones[9] = "Tokyo, Seoul, Osaka, Saporro, Yakutsk";
$timezones[9.5] = "Adelaide, Darwin";
$timezones[10] = "[EAST(East Australian Standard)] Brisbane, Guam, Vladivostok, Papua New Guinea";
$timezones[11] = "Sydney, Melbourne, Canberra, Magadan, Solomon Islands, New Caledonia";
$timezones[12] = "Auckland, Wellington, Fiji, Kamchatka";

$i=0;

while(list($timediff, $cities)=each($timezones)) {
$i++;

$servertime = ($timeoffset - ($timediff+8));

$timestamp = mktime (date("H")-$servertime, date("i"), date("s"), date("m"), date("d"), date("Y"));
$datetime = date($dateformat, $timestamp);
$hourtime = date($hourformat, $timestamp);
if ($timediff == $bbuserinfo[timezoneoffset]) {

Xenon
05-02-2004, 04:57 PM
do not use numeric vals, use strings instead,

so not $timezones[-3.5] but $timezones['-3.5']

Boofo
05-02-2004, 05:25 PM
I just did that and it didn't change anything. The times are all still on the hour and not any on the half-hour. :(

It must be something in this part of the code that is not allowing it to show the half hour times. Any idea what to do to fix it? ;)

$i=0;

while(list($timediff, $cities)=each($timezones)) {
$i++;

$servertime = ($timeoffset - ($timediff+8));

$timestamp = mktime (date("H")-$servertime, date("i"), date("s"), date("m"), date("d"), date("Y"));
$datetime = date($dateformat, $timestamp);
$hourtime = date($hourformat, $timestamp);
if ($timediff == $bbuserinfo[timezoneoffset]) {

Xenon
05-02-2004, 07:40 PM
afaik negative and broken ints could always lead to problems, so i suggest to use strings.
(afaik it's also the rules of the vb3 coding styles...)

as for the bug, you cannot use float values for mktime iirc, so you would have to use

$timestamp = mktime (date("H"), date("i") - ($servertime* 60), date("s"), date("m"), date("d"), date("Y"));

instead of
$timestamp = mktime (date("H")-$servertime, date("i"), date("s"), date("m"), date("d"), date("Y"));

Boofo
05-02-2004, 10:13 PM
Ah, ok. Now that makes sense. And it fixed the probelm, too. Thank you, sir. ;)

One last question, is there a way to get the servertime without having to add the +8 in that line?

Xenon
05-03-2004, 04:53 PM
$vboptions[timezone] or such is the variable you are searching for.

not sure what exactly, but something like that, you ahve to look up the global vb files to find out the exact spelling ;)

Boofo
05-03-2004, 05:00 PM
You are right. I found that about 10 minutes ago. ;)

Would there be a way to set each timezone to allow DST on or off? I found out that Seoul doesn't have DST so the time is off by an hour. Can i do that per line somehow? Like this:


DST ON
$timezones[-12] = "Eniwetok, Kwajalein";
DST OFF
$timezones[-11] = "Midway Islands, American Samoa, Gilbert Islands";

What code could I use there to accomplish that?

Xenon
05-03-2004, 05:02 PM
aw, you're getting a bit too complicated now ^^

Fluous
05-03-2004, 05:05 PM
Yes I am having trouble. Because it says I am on -5 GM and that is it 1:05 although its 2:05. Maybe it didnt see the time change? And is there anyway to make it so it works now?

And DST is on..so I don't know whats wrong.

Boofo
05-03-2004, 11:49 PM
aw, you're getting a bit too complicated now ^^

You know? You're right. Maybe it is a bit too complicated. But there are a lot of good hacks out there that are the same way and in order to do it right, sometimes it has to get a little bit complicated. What's the sense in even having a World Times hack if some of the times are off while others are not?

I'll get it figured out, somehow. Thanks for what you've done so far.