2011-07-13 145 views
16

如何刪除時間戳的時間部分?刪除時間部分的時間戳

因此,例如將1310571061轉換爲1310565600,這是明碼日期時間戳。

+0

什麼是時間戳平原日期?你的意思是日期+'00:00:00'? – Shef

+0

@shef,是的,我的意思是'Y-M-D 00:00:00'。沒有計算到時間戳中。 –

+0

給你一個答案。 – Shef

回答

24
strtotime(date("Y-m-d", 1310571061)); 

這應該爲你做。

+0

謝謝。但這隻能工作24小時。 –

+1

@大衛,你是什麼意思? – Brad

+0

如何將它改爲:'strtotime(date(「ymd」,time())'那麼? –

1

你可以這樣做:

$date = strotime(date("y/m/d", $timestamp)); 
4

嘗試:

<?php 
$ts = '1310571061'; 

echo strtotime(date('Y-m-d 00:00:00', $ts)); 
?> 
+0

''Y-m-d''更傳統 –

+0

@Yanick Rochon:更新後,應該滿足! :) – Shef

24

如果你想要一個數學解:

$time=1310571061; 
echo floor($time/86400)*86400; 

有24小時86400秒(這是典型的一天的的長度,但不是全部......見DST)。由於我們的時間戳採用UTC,因此這應該不成問題。您可以將其除以一天中的秒數,放棄剩餘部分,然後再乘以返回。

+0

很酷。在詢問問題給出了不正確的結果之前,我嘗試了'$ time - ($ time%86400)'。任何想法爲什麼? –

+0

順便說一句,我假設'時間$/86400'是一個錯字。對? –

+0

@David,對我來說工作得很好。也許先花時間浮動可能會有所幫助? – Brad

6

使用DateTime對象可以是有益的,而且還可以使代碼更易讀...

$dt = new DateTime(); 
$dt->setTimestamp(1310571061); 
echo $dt->format('Y-m-d, H:i:s') . "\r\n"; 
$dt->setTime(0, 0, 0); 
echo $dt->format('Y-m-d, H:i:s'); 

結果...

2011-07-14,03:31: 01

2011-07-14 00:00:00

是否使用原始時間戳的選擇或DateTime對象將很大程度上取決於實現需求,但一般來說,DateTime對象將大大減少可能出現的混亂和錯誤,特別是在時區問題和夏令時問題的周圍。

3
$pubdate='2003-02-19T00:00:00.000-05:00'; 

    $da = strtotime($pubdate); 
    echo $dat = date('Y-m-d', $da); 

答案是這樣的: 「2003-02-19」

謝謝