Действительно ли возможно создать DateTimeZone из погашения?

DateTimeZone конструктор только принимает название региона:

new DateTimeZone('Europe/London');

И не погашение от UTC:

new DateTimeZone('+01:00');//Unknown or bad timezone (+01:00)

Однако возможно получить такой DateTimeZone из a DateTime:

(new DateTime('2012-12-28T00:00:00+01:00'))->getTimezone()->getName();//+01:00

Таким образом, это немного странно. Есть ли способ непосредственно получить DateTimeZone из погашения?

5
nl ja de
Это doesn' t работа. Ваши связи - для DateTime , не DateTimeZone !
добавлено автор Benjamin, источник
It' s не неоднозначный, it' s указатель часового пояса, как определено ISO 8601. Наряду с местной датой и временем, это определяет точный момент на временной шкале. It' s различное понятие, чем регион часового пояса, который может относиться к одному или нескольким погашениям.
добавлено автор Benjamin, источник
Понимание прочитанного терпит неудачу. Жаль об этом.
добавлено автор Charles, источник
+01:00 отдельно неоднозначен - это могло быть Europe/ Копенгаген зимой или Europe/ Лондон летом.
добавлено автор DCoder, источник

4 ответы

В дополнение к Ответ Rafał, самым простым путем я нашел, до сих пор:

DateTime::createFromFormat('O', '+01:00')->getTimezone();

Редактируют

Это было a ошибка это было зафиксировано в PHP 5.5.10. Это теперь работает!

5
добавлено

Проверьте эту функцию.

http://pl1.php.net/manual/en/function.timezone-name-from-abbr.php

Необходимо будет преобразовать часы в секунды и передать их как второй параметр.

Sth. нравится новый DateTimeZone (timezone_name_from_abbr ('', 3600, 0)) должен работать.

1
добавлено

Современный ответ:

new DateTimeZone('+0100');

Документация:

http://php.net/manual/en/datetimezone.construct.php

0
добавлено
Следовательно мое обновление: "Это было ошибкой, которая была исправлена в PHP 5.5.10. Это теперь работает!"
добавлено автор Benjamin, источник

Я не думаю, что есть любой предопределенный путь, которым вы хотите пойти. Но если вы объявляете какую-либо глобальную функцию, которая возвратит вас дата и время с добавленным погашением, это могло бы помочь вам. Пример:

function getDateTime($format="dd-mm-YY"){

$currDate= date($format);

$currDate=date($format,strtotime("+1 day",$currDate);//or whatever needed instead of +1 day

}
0
добавлено
That' s не действительно, что I' m пытающийся достигнуть!
добавлено автор Benjamin, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp