重複の可能性:
相対時間を計算するにはどうすればよいですか?
2 日、2 か月、1 年などを示します。
どうやってするの?
コードベースは見ていませんが、次のようなものになると思います(シロサイの交尾習性と同じくらいPHPについて知っているので、疑似コード):
string duration (n): // days
if n >= 365 return str(int(n/365)) + " years"
if n >= 30 return str(int(n/30)) + " months"
if n >= 7 return str(int(n/7)) + " weeks"
return str(int(n)) + " days"
渡された値と分母を調整して、1 日よりも細かい解像度が必要な場合 (および の"1 month"
代わりに許可する"1 months"
場合)、準備完了です。
除算の不正確さについてはあまり心配しません (たとえば、平均的な月は約 30.44 日です)。
これは Pax 疑似コードの PHP バージョンです。
function duration ($n){
if ($n > 365) return ($n/365)." years";
if ($n > 30) return ($n/30)." months";
if ($n > 7) return ($n/7)." weeks";
return $n." days";
}