даты и перевод на летнее время

advocat

developer
даты и перевод на летнее время

довольно простой вопрос на первый взгляд, но немного помучившись, так и не удалось его грамотно решить, по этому обращаюсь к Вам :)

1. где можно найти нормальный вменяемый список стран/регионов с их таймзонами

2. как например из 2005-12-26 02:26:25 GMT перевести в дату той или иной страны с учетом перехода на летнее/зимнее время
 

_RVK_

Новичок
находишь в гугле 1 и делаешь 2 с помощью [m]explode[/m]/[m]strtotime[/m] и арифмитических операций
 

advocat

developer
2 _RVK_

особенно первое в студию, так как гугл никто не отменял, и первым вопрос задавался именно ему
по поводу п.2. в этом месте поподробнее, учитывая, что мы имеем дату unixtime формата. т.е. поподробнее о арифметических операциях
 

_RVK_

Новичок
advocat
ну 1 я за тебя искать не буду. у меня нету, честно :)
2... почему ты сразу умолчал что дата в unixtime? тут что телепаты?
а арифметике в школе учат. ты что не можешь посчитать сколько в часе секунд*на временную зону и отнять/прибавить к GMT?
 

advocat

developer
1. насчет unixtime - это вопрос не принципиальный, так как в unixtime при желании можно перевести любую дату

2. прибавить к GMT - смещение часового пояса - тоже не проблема

3. а вот насчет перевода на летнее /зимнее время, то ты фиг посчитаешь без данных, их в принципе допустим реально найти, но данные тоже довольно интересные:
например для России/Украины переход на летнее/зимнее время производится в последнее возскресенье марта/октября

и имея дату в GMT например, какими шаманскими способами ты собираешся вычислить, если ли смещение DST или нет, для например России ?

З.Ы. пробовал вариант с локалями, но не добился желаемого результа
 

SiMM

Новичок
> в unixtime при желании можно перевести любую дату
Это заблуждение. Если вспомнить о конечной разрядности unixtime.

> и имея дату в GMT например, какими шаманскими способами ты собираешся вычислить, если ли смещение DST или нет, для например России ?
Проблема решается предоставлением выбора пользователю.
 

Vetal

Новичок
а это элегантнее всего
требует pear-модуль Date
PHP:
require "Date/TimeZone.php";
require "Date.php";

$zones = array('America/New_York', 'Europe/London', 'Europe/Moscow', 'Asia/Tokyo');
foreach ($zones as $zone) {
   $z = new Date_TimeZone($zone);
   print "$zone offset: " . $z->getOffset(new Date())/3600000 . "\n";
}
http://xpoint.ru/forums/misc/thread/36844.xhtml
 
Сверху