第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP詞義化時間 idate

PHP詞義化時間 idate

一只萌萌小番薯 2019-04-08 11:19:04
從typecho中剝了一段詞義化時間代碼并按需做了修改,在測試中發(fā)現(xiàn)有個問題很納悶:(假如Unix時間戳$form與$now相差300,而它們處于不同的小時段idate(H),這樣5分鐘前的操作卻顯示為1小時前,然而在TE中卻沒有發(fā)現(xiàn)這現(xiàn)象^-!,現(xiàn)在的問題是$between0&&$between
查看完整描述

2 回答

?
茅侃侃

TA貢獻1842條經(jīng)驗 獲得超22個贊

因為你剝離出來的代碼對小時只對同一小時的情況進行了判斷,并未判斷相鄰小時但相差60分鐘內(nèi)的情況,因此,我加了一個gapHour的變量用來代表小時差,當(dāng)時間相差60分鐘內(nèi),做一個if判斷,如果同一小時默認(rèn)處理($gapHour==0),相差一個小時時($gapHour==1),再做相應(yīng)的處理。
functiondateWord($from){
$now=time();
$between=$now-$from;
$s=date('Y年m月d日H:i',$from);
$fromHour=idate('H',$from);
$nowHour=idate('H',$now);
$gapHour=$nowHour-$fromHour;
if($between>0&&$between<86400&&idate('d',$from)==idate('d',$now)){
if($between<3600){
if($gapHour==0){
if($between<60&&idate('i',$from)==idate('i',$now)){
$second=idate('s',$now)-idate('s',$from);
if(0==$second){
return'剛剛';
}else{
return''.$second.'秒前';
}
}
$min=idate('i',$now)-idate('i',$from);
return''.$min.'分鐘前';
}
elseif($gapHour==1){
if($between<60&&idate('i',$from)==idate('i',$now)){
$second=idate('s',$now)+(60-idate('s',$from));
if(0==$second){
return'剛剛';
}else{
return''.$second.'秒前';
}
}
$min=idate('i',$now)+(60-idate('i',$from));
return''.$min.'分鐘前';
}
}
$hour=idate('H',$now)-idate('H',$from);
return''.$hour.'小時前';
}
}
                            
查看完整回答
反對 回復(fù) 2019-04-08
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

額一來大段代碼看著頭暈,二來官方現(xiàn)在也不是很推薦用date()函數(shù)來操作時間對象了,所以我把整個的代碼都改寫了一下:
functiondateWord($from,$now){
$timezone=newDateTimeZone('Asia/Shanghai');
$now=newDateTime($now,$timezone);
$from=newDateTime($from,$timezone);
$between=$now->diff($from);
if(!$between->invert)returnfalse;
/**如果超過了一年**/
if($between->y)
return$from->format('Y年m月d日');
/**一年內(nèi)大于七天**/
if($between->days>6)
return$from->format('n月j日');
/**一個禮拜內(nèi)但是大于兩天**/
if($between->days>1)
return$between->format('%d天前');
/**如果是昨天**/
if($between->days)
return$from->format('昨天H:i');
/**如果一天之內(nèi)超過一個小時**/
if($between->h>1)
return$between->format('%h小時前');
if($between->i>1)
return$between->format('%i分鐘前');
return$between->s?$between->format('%s秒前'):'剛剛';
}
functiondateWordToHtml($from,$now='now'){
$dateWord=dateWord($from,$now);
$from=newDateTime($from,newDateTimeZone('Asia/Shanghai'));
$fromWord=$from->format('Y年m月d日H:i');
return"$dateWord";
}
echodateWordToHtml("2014/4/149:32");
dateWord()函數(shù)對應(yīng)的是Typecho原版的返回,dateWordToHtml()函數(shù)則是對應(yīng)你修改的那個函數(shù)(另外新建一個函數(shù)主要是方便其他人參考調(diào)用)。
                            
查看完整回答
反對 回復(fù) 2019-04-08
  • 2 回答
  • 0 關(guān)注
  • 343 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號