2012-12-19 48 views
2

我當前的代碼:PHP:如何從模式H創建時間戳:我(17:45)?

<?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()。這感覺很骯髒,我認爲可能有另一種乾淨的方式。

你將如何創建格式的時間戳?

在此先感謝!

+1

第二個代碼有什麼問題? – Neal

+0

@Neal請查看剛剛添加到我的帖子中的致命錯誤。謝謝! –

回答

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"]); 
+0

就是這樣。我錯過了樹林。對我感到羞恥! –

+1

不正確,'DateTime :: createFromFormat(「H:i」,$ _POST [「time」]);'會工作,但不一定會產生所需的結果。看[這個例子](http://3v4l.org/9W4kA)。 – nickb

+1

@nickb謝謝。所以它只能在5.3.x或更高版本上運行。我剛剛刪除了聲明。 :) –

3

你不能。時間戳記需要計算一個日期,並且沒有可用的日期。

+1

這不是100%正確,'createFromFormat()'會將其日期的其他字段設置爲其默認行爲的當前日期/時間(不帶'!'或'|'格式修飾符)。看[這個例子](http://3v4l.org/9W4kA)。 – nickb

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" }