2011-11-07 36 views
0

我已经保存在我的MySQL数据库的日期,我可以锻炼,因为像这样的日期的日子里,php strtotime和工作多年?

ceil(time() - strtotime($account['joined'])/60/60/24 % 365); 

但我怎么能制定出这些年来,因为年是时间的最高形式,因为后那是千禧年等等?

变量是一个如:

2011-10-06 22:01:57 

感谢

+0

你可以发布'$ account ['joined']'值的示例 – Mob

+0

闰年呢? –

回答

1

使用date("Y")

<?php 
$time = strtotime("1 Jan 2001 1:11:11"); 
echo "Years since time: ".(date("Y") - date("Y", $time)); 

http://sandbox.phpcode.eu/g/220fe/1

+0

好的将尝试这个,谢谢 – cgweb87

+0

这将工作几分钟,几小时,几秒钟,是否更好地使用它比我的例子? – cgweb87

1

你总是可以使用date("Y", $timestamp)

,并为您的问题,您可以使用date_diff,

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 
2

可以使用MySQL数据库来获取时间跨度。

您可以在查询中使用DATEDIFF来减去当前日期的连接日期,并且可以通过这种方式获得时间跨度。

此功能说明如下:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff

希望它可以帮助

+0

想到这个,但我的网站是沉重的数据库调用,并占用了很多的开销,而渲染PHP不喜欢使用PHP,谢谢虽然:) – cgweb87

+1

编码在数据库方面有好处:减少错误因为一切都基于一个时钟(数据库时钟如果与Web服务器分开),最小化流量(不会传递太多参数)以及更快的查询。如果将经常运行的语句放在存储过程中,可以加快查询速度。 [链接](http://stackoverflow.com/questions/208976/are-stored-procedures-faster-for-simple-queries) – shimofuri

0

如果你可以从MySQL侧进行计算,使用内置date/time functions。例如假设表T包含一个日期栏d,并希望将其对当前日期的天数来比较:

SELECT 
    TIMESTAMPDIFF(DAY, D, CURDATE()) AS 'days_elapsed' 
FROM T 

可以在TIMESTAMPDIFF的第一个参数更改为以下任何一项:FRAC_SECOND (微秒),SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER或YEAR。