-7

Привет!

Есть задача установить на сайте таймер обратного отсчета, для него нужна дата окончания акции. В базе не хочется создавать кучу полей для даты и отдельных ее составляющих, по-этому хочу сосдать поле где будет указана дата окончания акции, ее после вывода нужно разбить на составляющие, т.е. 2013-20-10 10:32:12 и надо разбить на отдельные переменные: $year; $day; $month; $mday; $hours; $minutes; $seconds

Как это сделать?

1
  • 1
    не храните дату в виде строки
    – zb'
    10 окт 2013 в 2:31

5 ответов 5

11

function date()

Код на Ideone.com

P.S.: в вашей дате необходимо поменять местами месяц и день, так как функция strtotime() принимает такой формат.

2
  • да ты просто капитан очевидность! (сарказм) как сделать! 9 окт 2013 в 9:16
  • 2
    @Alexander Sizintsev тяжело по ссылке перейти?
    – Johny
    9 окт 2013 в 21:30
6

Пользуйтесь классом DateTime, DateTime::createFromFormat.

2
$newdate = "2013-20-10 10:32:12";

$dt_explode = explode(' ',$newdate);

list($year, $month, $day) = explode('-', $dt_explode[0]);

list($hours, $minutes, $seconds) = explode(':',$dt_explode[1]);
1

Может он посложнее хотел?

$newdate = "2013-20-10 10:32:12";

$date_explode = explode(" ", $newdate);

$date = explode("-", $date_explode[0]);
$time = explode(":", $date_explode[1]);

$year = $date[0];
$day = $date[1];
$month = $date[2];

$hours = $time[0];
$minutes = $time[1];
$seconds = $time[2];
2
  • 4
    Мсье знает толк... :D
    – dekameron
    10 окт 2013 в 1:35
  • 1
    оу оу оу, полегче =) 10 окт 2013 в 9:40
1

Для этого есть функция strtotime, которая преобразует строку в метку времени. Результат присвоить переменной, и указывать её вторым параметром к функции date.

$newdate = "2013-20-10 10:32:12";
date('m',$newdate)

покажет 10 (десятый месяц, октябрь)

date('s',$newdate)

покажет 12 (секунд). Да, и из базы mysql можно доставать не всю дату, а допустим из поля date типа datetime можно указать в запросе MONTH(date), достанет только месяц. Можно задать день, год, день недели, день от начала года и т.д., вариантов много.

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.