[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать дату, пригодную для работы с mktime?
Владимир55
Дата в ситемап имеет формат

2016-10-19T18:51:53+03:00

Я разбираю её с помощью функций strpos и substr, что бы привести в состояние

час / минута / секунда / месяц / день / год, что бы передать в mktime.

Это работает, но слишком громоздко.

Нельзя ли эту задачу решить регулярным выражением?
T1grOK
Можно взять DateTime и не мучить ни себя, ни регулярные выражения smile.gif

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Владимир55
С DateTime я с самого утра бьюсь, но не справился (нужно решение на процедурном РНР).
Kusss
$time = strtotime('2016-10-19T18:51:53+03:00'); // 1476892313
echo date('d.m.Y H:i:s', $time); // 19.10.2016 08:51:53
Владимир55
Спасибо!
А я как-то все очень сложно пытался сделать...
AllesKlar
Цитата (Kusss @ 27.02.2017 - 15:29)
<pre class="sh_sourceCode" rel="php"><span class="sh_variable">$time</span> <span class="sh_symbol">=</span> <span class="sh_function">strtotime</span><span class="sh_symbol">(</span><span class="sh_string">'2016-10-19T18:51:53+03:00'</span><span class="sh_symbol">);</span> <span class="sh_comment">// 1476892313</span>
<span class="sh_function">echo date</span><span class="sh_symbol">(</span><span class="sh_string">'d.m.Y H:i:s'</span><span class="sh_symbol">,</span> <span class="sh_variable">$time</span><span class="sh_symbol">);</span> <span class="sh_comment">// 19.10.2016 08:51:53</span> </pre>

Не правильно.

У меня твой скрипт выдал 19.10.2016 17:51:53
В чем же дело?

Может лучше DateTime? Его же люди писали, мучались, а вы вот так вот даты, да в стринги, да еще регулярками...


Цитата (Владимир55 @ 27.02.2017 - 15:27)
С DateTime я с самого утра бьюсь, но не справился (нужно решение на процедурном РНР).

Показывай, чего ты там вымучал с DateTime

_____________
[продано копирайтерам]
Владимир55
Цитата (AllesKlar @ 27.02.2017 - 18:13)
Показывай, чего ты там вымучал с DateTime

Да уже нечего показать - стер файл с макетом...
killer8080
Цитата (AllesKlar @ 27.02.2017 - 22:13)
Не правильно.

всё правильно
Цитата (AllesKlar @ 27.02.2017 - 22:13)
Может лучше DateTime?

чем лучше? В контексте вопроса, нужно просто получить timestamp из строковой даты, strtotime() здесь достаточно.
AllesKlar
Цитата (killer8080 @ 28.02.2017 - 23:51)
всё правильно

Что правильно-то?
Входные данные: строка 2016-10-19T18:51:53+03:00
Пропускаем через скрипт, у меня на выходе 19.10.2016 17:51:53 , у тебя вообще другое значение будет (о чем я мягко намекнул Владимир55)
Timestamp будет един на любых машинах, а вот обратное преобразование (год, месяц, день, час, минуты, секунды) будут зависить от конкретной локали.
В исходной строке четко прописана временная зона +03, и это значение будет потеряно.


Цитата (killer8080 @ 28.02.2017 - 23:51)
чем лучше? В контексте вопроса, нужно просто получить timestamp из строковой даты, strtotime() здесь достаточно.

Ему нужно отдельные значения год, месяц и т.д.
Как дальше? Т.е. на выходе должно быть строки:
2016
10
19
18
51
53

_____________
[продано копирайтерам]
killer8080
Цитата (AllesKlar @ 1.03.2017 - 21:57)
Timestamp будет един на любых машинах, а вот обратное преобразование (год, месяц, день, час, минуты, секунды) будут зависить от конкретной локали.

само собой smile.gif
Цитата (AllesKlar @ 1.03.2017 - 21:57)
В исходной строке четко прописана временная зона +03, и это значение будет потеряно.

ну раз он преобразует дату/время в абсолютный формат, значит информация о часовом поясе ему не нужна.
Цитата (AllesKlar @ 1.03.2017 - 21:57)
Ему нужно отдельные значения год, месяц и т.д.
Как дальше? Т.е. на выходе должно быть строки:
2016
10
19
18
51
53

нет, они ему не нужны, вопрос звучал так
Цитата (Владимир55 @ 27.02.2017 - 17:08)
Как сделать дату, пригодную для работы с mktime?

т.е эти строки были нужны, только для передачи их аргументами в mktime, что бы на выходе получить timestamp. Для достижения этой цели они не нужны, ТС выбрал не правильный путь решения задачи. Собственно Kusss ему продемонстрировал самое оптимальное решение. Конкретно для этой цели strtotime более чем достаточно.
AllesKlar
killer8080
Ты в суппорте работаешь, чтоле? Откуда ты столько подробностей знаешь, о которых, возможно, ТС еще даже подумать не успел biggrin.gif

_____________
[продано копирайтерам]
killer8080
Цитата (AllesKlar @ 2.03.2017 - 00:02)
Ты в суппорте работаешь, чтоле? Откуда ты столько подробностей знаешь, о которых, возможно, ТС еще даже подумать не успел

просто прочитал вопрос wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.