2

我当前的代码:

<?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 */
?>

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

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

提前致谢!

4

3 回答 3

3

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

于 2012-12-19T18:20:25.137 回答
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"]);
于 2012-12-19T18:20:45.640 回答
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" } 
于 2012-12-19T18:27:01.623 回答