2011-01-22 31 views
10

戳我試圖我怎樣才能獲得今天的PHP

$dtToday = DateTime::createFromFormat('Y-m-d', date('Y-m-d')); 

但是當我將它輸出

die($dtToday->format('d M Y g:i:s a')); 

我仍然得到時間,例如「2011年1月22日下午4時53分59秒」。這是爲什麼?

UPDATE

啊......很多人誤解了我,是我不好,我忘了指出要點。我只在日期部分創建了日期,我不想要時間。所以,我期望像

22 Jan 2011 12:00:00 am 
+0

你沒問之日起爲'd返回我的g:我:sa`那麼輸出有什麼問題? – 2011-01-22 09:20:48

+0

@Salman A,我用現在時間創建了日期,所以我預計時間是凌晨12:00:00? – 2011-01-22 09:27:26

+0

好的,我發佈了一個答案 – 2011-01-22 10:31:20

回答

11

好吧,我承認我不熟悉DateTime類。但我確定它提供了setHour,setMinute等方法,您可以使用它們將時間部分歸零。就個人而言,我想創建的日期與mktime()功能:

echo date("Y-m-d H:i:s", // this line is for demonstration 
    mktime(0, 0, 0)  // this generates a timestamp which can be used in most date functions 
          // first three parameters are hour, minute, second which I set to 0 
          // remaining parameters are optional 
          // infact all parameters are optional and all parameters default to corresponding portion of the *current* date/time 
); 
5

您可以通過將當前Unix時間戳作爲第二個參數日期函數

echo date("Y-m-d H:i:s",time()); 
+4

date()的第二個參數默認爲time(),所以date('Y-m-d')就足夠了。 – gregjor 2011-01-22 09:09:43

0

做到這一點是使用UTC,或什麼呢?

我有一個PHP版本,只要我做了什麼date沒有先使用date_default_timezone_set給我一個錯誤。也許這會幫助你。

0

從您的代碼中刪除這部分代碼g:i:s a

現在,如果你想根據你的本地格式化好日期,我建議你使用strftime()函數。

1

你得到 「2011年1月22下午4時53分59秒」,因爲這些都是規則你格式化你的日期:
d(天):22
M(月):揚
Y(年):2011
克(12小時制):4
我(分鐘):53個
S(秒):59
一個(AM/PM):下午
大約格式的更多speciffic你會就像你的時間戳一樣。 我建議你在php date文檔上取得一個高峯。

12

查看文檔DateTime::createFromFormat

如果格式不包含字符!那麼未在格式中指定的部分生成時間將被設置爲當前系統時間。

如果你這樣做了下面的函數調用,你會得到結果,你希望:

$dtToday = DateTime::createFromFormat('!Y-m-d', date('Y-m-d')); 
5

今天開始時間戳

$today_start_ts = strtotime(date('Y-m-d', time()). '00:00:00');