Преобразование отдельных значений месяца, дня и года в метку времени

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

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

Ответ 1

Учитывая переменные $year $month $day $hour $minute, вы можете сделать:

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

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

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

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

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

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

Ответ 2

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

$time = mktime($hour, $minute, 0, $month, $day, $year);

Ответ 3

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

использовать setDate

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');
?>

Ответ 4

Вы можете предоставить ему функцию 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,

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

Ответ 5

Используйте его так: 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

Ответ 6

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

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

cit @Pekka:)

Ответ 7

strtotime($month."-".$day."-".$year)