Преобразование отдельных значений месяца, дня и года в метку времени - PullRequest
11 голосов
/ 02 июня 2011

У меня есть значение месяца (1-12), значение дня (1-31) и значение года (2010,2011,2012).У меня также есть значение часа и значение минуты.

Как я могу присвоить это значение strtotime(), чтобы оно могло преобразовать его в метку времени?

Ответы [ 7 ]

15 голосов
/ 02 июня 2011

С учетом переменных $year $month $day $hour $minute вы можете сделать:

strtotime("$year-$month-$day $hour:$minute");

Будьте осторожны, заключая переменные в ", в этом случае никогда не в '.

ОБНОВЛЕНИЕ (благодаря комментариям @Clockwork и @Tadeck):

В случае, если есть переменная $timeofday, которая представляет время суток (т.е. AM или PM), тогда вы можете разобрать это с помощью:

strtotime("$year-$month-$day $hour:$minute$timeofday");

То есть просто прикрепите эту переменную к концу текста.

8 голосов
/ 04 апреля 2017

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

использование setDate funtion

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');
?>
7 голосов
/ 02 июня 2011

strtotime лучший инструмент для этой работы? А как насчет mktime()?

$time = mktime($hour, $minute, 0, $month, $day, $year);
4 голосов
/ 02 июня 2011

Вы можете предоставить его для функции strtotime() различными способами, как указано в документации .Вот некоторые примеры:

$your_time = strtotime('12/31/2011 9:59');
$your_time = strtotime('2011-12-31 9:59');
$your_time = strtotime('December 31, 2011 9:59');

и т. Д.Это действительно очень гибко.

Список допустимых форматов можно найти в документации , например (из списка «Составные форматы» в упомянутой документации), например:

  • 10/Oct/2000:13:55:36 -0700,
  • 2008:08:07 18:11:31,
  • 2008-08-07 18:11:31,
  • 2008-07-01T22:35:17.02,
  • 2008-07-01T22:35:17.03+08:00,
  • 20080701T22:38:07,
  • 20080701T9:38:07,
  • 20080701t223807,
  • 20080701T093807,
  • 2008-7-1T9:3:37,

(это действительно копия документации)

1 голос
/ 02 июня 2011

Используйте это так strtotime("YYYY-mm-DD HH:MM AM/PM"):

echo date("d F Y h:i:s A", strtotime("2011-06-01 11:15 PM")) . "\n";

OUTPUT

01 June 2011 11:15:00 PM
0 голосов
/ 02 июня 2011
strtotime($month."-".$day."-".$year)
0 голосов
/ 02 июня 2011

Y-m-d hh:mm будет работать

echo strtotime('2011-12-14 11:44 am');

cit @Pekka:)

...