PHP:如何从模式H创建时间戳:i(17:45)?

时间:2012-12-19 18:16:46

标签: php datetime timestamp mktime

我目前的代码:

<?php
    $timestamp = DateTime::createFromFormat("d.m.Y H:i", $_POST["datetime"]);
    echo $timestamp; // works!
?>

现在我有一个包含两个字段的表单:日期和时间,分开。

<?php
    $timestamp = DateTime::createFromFormat("d.m.Y", $_POST["date"]);
    echo $timestamp; // works!

    $timestamp = DateTime::createFromFormat("H:i", $_POST["time"]);
    echo $timestamp; // doesn't work (error below)!

    // Edit: 
    /* Fatal error: Call to a member function getTimestamp() on a non-object in */
?>

我想避免在mktime()中使用explode()。这感觉很脏,我认为可能有另一种干净的方式。

您如何从格式创建时间戳?

提前致谢!

3 个答案:

答案 0 :(得分:3)

你做不到。时间戳需要一个日期才能计算,并且没有可用的日期。

答案 1 :(得分:2)

如果您想从$_POST["date"]$_POST["time"]获取日期和时间,请使用以下

DateTime::createFromFormat("d.m.Y H:i", $_POST["date"]." ".$_POST["time"]);

如果你想知道特定时间午夜的秒数,你可以使用它,

DateTime::createFromFormat("Ymd H:i", date("Ymd")." ".$_POST["time"]);

答案 2 :(得分:1)

使用日期时间的settime方法

$timestamp = \DateTime::createFromFormat("d.m.Y", '10.10.2012');
$timestamp->setTime(17,12);
var_dump($timestamp);

给出

object(DateTime)#1142 (3) { ["date"]=> string(19) "2012-10-10 17:12:00" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" }