问题描述
我有这个函数来计算自某一日期以来所经过的相对时间,
function nicetime($ date){
if(empty($ date)){
return没有提供日期;
}
$ periods = array(second,minute,hour,day,week,month,year,decade) ;
$ lengths = array(60,60,24,7,4.35,12,10);
$ now = time();
$ unix_date = strtotime($ date);
//检查日期的有效性
if(empty($ unix_date)){
returnBad date;
}
//是未来日期或过去日期
if($ now> $ unix_date){
$ difference = $ now - $ unix_date;
$ tense =ago;
} else {
$ difference = $ unix_date - $ now;
$ tense =from now;
}
for($ j = 0; $ difference> = $ lengths [$ j]& $ j< count($ lengths)-1; $ j ++) {
$ differences / = $ lengths [$ j];
}
$ difference = round($ difference);
if($ difference!= 1){
$ periods [$ j]。=s;
}
return$ difference $ periods [$ j] {$ tense};
}
我传递函数的日期为2011-01-16 12: 30,但是我得到不好的日期返回,这意味着 $ unix_date
是空的,但是如果我死在函数中,我得到 $ date
传递给函数,但是它返回一个(在它之前,下面是我如何调用该方法。
echo nicetime(date('Y:m:d G:i',$ a ['created_at']))
echo nicetime(2011-01-16 12:30);
对我来说很合适我建议你确保
$ a ['created_at ']
给你你的东西。
$ dtDate = $ a ['created_at'];
$ strDate = date('Y:m:d G:i',$ dtDate) ;
echo $ strDate;
echo nicetime($ strDate);
肯定$ strDate是你认为的。I have this function to work out the relative time that has elapsed since a certain date,
function nicetime($date) { if(empty($date)) { return "No date provided"; } $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); $lengths = array("60","60","24","7","4.35","12","10"); $now = time(); $unix_date = strtotime($date); // check validity of date if(empty($unix_date)) { return "Bad date"; } // is it future date or past date if($now > $unix_date) { $difference = $now - $unix_date; $tense = "ago"; } else { $difference = $unix_date - $now; $tense = "from now"; } for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) { $difference /= $lengths[$j]; } $difference = round($difference); if($difference != 1) { $periods[$j].= "s"; } return "$difference $periods[$j] {$tense}"; }
I am passing the function a date as "2011-01-16 12:30", however I am getting bad date returned which means that
$unix_date
is empty however if I die in the function I get the$date
that is passed to the function however it gets return with a ( before it, below is how I am calling the method.
echo nicetime(date('Y:m:d G:i', $a['created_at']))
解决方案echo nicetime("2011-01-16 12:30");
works fine for me. I would suggest you ensure
$a['created_at']
is giving you what you thing it is. Maybe try
$dtDate = $a['created_at']; $strDate = date('Y:m:d G:i', $dtDate ); echo $strDate; echo nicetime($strDate);
Make sure $strDate is what you think it is.
这篇关于php相对时间问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!