2012-07-12 2 views
0

Я хотел бы отдельно разделить данные дня и месяца из этой отметки времени «2012-07-12 17:50:00».PHP - Поверните временную метку (2012-07-12 20:26:00) В две отдельные переменные, которые отражают значения месяца и дня?

Поэтому в основном я мог бы иметь две переменные, такие как:

$month = 7 
$day = 12 

Поскольку я не очень опытен с PHP, в частности, регулярное выражение кодирования, я думал, что я бы разместить этот вопрос, чтобы спросить совета о том, как я бы о достижении чего-то подобного.

Любая помощь, понимание или ввод в этом отношении были бы весьма полезными. Спасибо!

КАК ПРИМЕЧАНИЕ. Кроме того, я хотел бы превратить две переменные в выход, например, «12 июля». Это можно закодировать довольно легко, поэтому я не сделал это частью вопроса, но если есть простая функция, которая имеет дело с этой информацией, тоже будет очень признательна!

+1

Вы можете посмотреть документацию для класса DateTime – GordonM

+0

@GordonM Спасибо, я буду Google что теперь и посмотреть, если это актуально. –

+2

Является ли значение даты/времени mysql? Если это так, вам будет намного лучше просто «выбрать день (ваше поле) как день, месяц (ваше поле) как месяц». Кроме того, будет 'select date_format (yourfield, '% D% M')', чтобы напрямую выбрать вашу форматированную версию. –

ответ

2
<?php 
list($month,$day) = explode(':',date('n:j',strtotime('2012-07-12 17:50:00')),2); 
echo 'Month: '.$month.'<br />'."\n";//Month: 7 
echo 'Day: '.$day.'<br />'."\n";//Day: 12 
?> 

И ...

<?php 
echo date('jS F',strtotime('2012-07-12 17:50:00'));//Outputs: 12th July 
?> 
+0

Я действительно верю, что вы полностью ответили на мой вопрос. Спасибо огромное! Пожалуйста, см. Мой комментарий к Талисину в их ответе. –

1

Предполагая, что штамп времени является строкой, что-то, как это должно работать, если вы ищете решение регулярных выражений ...

<?php 
$string = '2012-07-12 17:50:00'; 
preg_match_all('/\d{4}-(\d{2})-(\d{2})/', $string, $matches); 
$month =$matches[1][0]; 
$day = $matches[2][0]; 
?> 
+0

Большое спасибо за ваш ответ, это именно то, о чем я думал. Но теперь я не совсем уверен, будет ли это наилучшим решением. Мне нужно время подумать :) –

3

Как сказал в комментариях, DateTime будет хорошим выбором.

Во-первых, если ваш PHP конфигурации dosen't уже установить его для вас, установить часовой пояс по умолчанию по:

date_default_timezone_set('XXXX'); 

XXXX стоять на значение вне List of supported timezones

инициализировать дату, :

$DateTime = new DateTime(); 

в зависимости от того, где вы получаете временную метку, предположим, вы будете создавать его из PHP:

$timestamp = $DateTime->getTimestamp(); 

Теперь формат вывода

echo $month = $DateTime->format('m'); 
echo $day = $DateTime->format('d'); 

или получить вам желаемый результат:

echo $output = $DateTime->format('dS F'); 
+0

Это хороший ответ, он заслуживает более одной звезды :) Но у меня есть вопрос, в последнем, как вы форматируете как 'dS', тогда как это' jS' в ответе ниже польский ураган. Что это означает? –

+2

@BlackberryFan, 'd = от 01 до 31 (ведущие нули) j = от 1 до 31 (не ведущие нули)' – PolishHurricane

+0

вы можете найти все доступные форматы здесь: http://php.net/manual/en/function .date.php – Talisin

 Смежные вопросы

  • Нет связанных вопросов^_^