日期/时间从php转换为时间
问题描述:
在我的数据库中你的日期/时间是这样的格式
Hello in my database date / time are in this format
2010-06-01T18:20:25+0000
我想回应那个从那个日期开始的时间
I'd like to echo that out to time passed since that date / time
eg
4天3小时36分4秒
4 days 3 hours 36 minutes and 4 seconds
这是可能吗?
答
以下是我写的一个函数来做到这一点。可以*使用它。
Below is a function I wrote to do this. Feel free to use it.
/**
* Returns rough (in largest single unit) time elapsed between two times.
* @param int $iTime0 Initial time, as time_t.
* @param int $iTime1 Final time, as time_t. 0=use current time.
* @return string Time elapsed, like "5 minutes" or "3 days" or "1 month".
* You might print "ago" after this return if $iTime1 is now.
* @author Dan Kamins - dos at axonchisel dot net
*/
function ax_getRoughTimeElapsedAsText($iTime0, $iTime1 = 0)
{
if ($iTime1 == 0) { $iTime1 = time(); }
$iTimeElapsed = $iTime1 - $iTime0;
if ($iTimeElapsed < (60)) {
$iNum = intval($iTimeElapsed); $sUnit = "second";
} else if ($iTimeElapsed < (60*60)) {
$iNum = intval($iTimeElapsed / 60); $sUnit = "minute";
} else if ($iTimeElapsed < (24*60*60)) {
$iNum = intval($iTimeElapsed / (60*60)); $sUnit = "hour";
} else if ($iTimeElapsed < (30*24*60*60)) {
$iNum = intval($iTimeElapsed / (24*60*60)); $sUnit = "day";
} else if ($iTimeElapsed < (365*24*60*60)) {
$iNum = intval($iTimeElapsed / (30*24*60*60)); $sUnit = "month";
} else {
$iNum = intval($iTimeElapsed / (365*24*60*60)); $sUnit = "year";
}
return $iNum . " " . $sUnit . (($iNum != 1) ? "s" : "");
}
要使用此功能,您需要先将时间转换为time_t格式(自历元以来的整数#秒)。这些PHP函数之一可能有助于: http://php.net/strptime 或 http://php.net/strtotime 。
To use this func, you'd need to first convert your times to time_t format (integer #seconds since the "epoch"). Either of these PHP functions will probably help with that: http://php.net/strptime or http://php.net/strtotime.