Как преобразовать дату и время в метку времени unix в php?


echo $_POST['time']."<br/>";
echo $_POST['day']."<br/>";
echo $_POST['year']."<br/>";
echo $_POST['month']."<br/>";

У меня есть хранилище значений, подобное этому, теперь я хочу создать временную метку из этих значений. Как это сделать в PHP? Заранее благодарю

Author: deceze, 2010-04-22

4 answers

Вы можете использовать mktime(). В зависимости от формата $_POST['time'], вы разделяете его на час/минуту/секунду, а затем используете

$timestamp = mktime($hour, $min, $sec, $month, $day, $year)
 7
Author: Matteo Riva, 2010-04-22 12:55:45
echo mktime(0,0,0,$_POST['month'],$_POST['day'],$_POST['year']);

Я не знаю, в каком формате ваше время, поэтому вам, вероятно, нужно его взорвать(), а затем поместить значения в три первых параметра mktime(), например:

$_POST['time'] = '8:56';
$time = explode(':',$_POST['time']);
echo mktime($time[0],$time[1],0,$_POST['month'],$_POST['day'],$_POST['year']);
 1
Author: Tower, 2010-04-22 12:59:49

Используйте объект Дата-время. Анализ выполняется за вас, и вы можете контролировать различия в часовых поясах, чтобы переход на летнее время не вызывал проблем.

$datetimestring="{$_POST['year']}-{$_POST['month']}-{$_POST['day']} {$_POST['time]}";
$dt= date_create($datetimestring);//optional 2nd argument is TimeZone, so DST won't bite you
echo $dt->format('U');
 0
Author: dnagirl, 2010-04-22 13:05:31

Другой вариант - strtotime:

$time = "{$_POST['time']} {$_POST['month']}/{$_POST['day']}/{$_POST['year']}";
$timestamp = strtotime($time);

Если $_POST['time'] уже в часах и минутах (формат HH:MM), то это избавит вас от необходимости разворачивать и анализировать его. strtotime может анализировать головокружительное количество строк в допустимое время.

 0
Author: Josh, 2010-04-22 13:16:13