2011-07-13 105 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”

谢谢