次の関数を参照してください。
// Get date of retirement
public function getRetireYear()
{
$this->retireYear = $this->getBirthDay()->add(new \DateInterval('P60Y'));
return $this->retireYear;
}
// Get time left for retirement
public function getTimeToRetirement()
{
// Date of today
$today = new \DateTime('today');
// Calculate date diff between today and retirement day.
$this->timeToRetirement = $today->diff($this->retireYear);
// Return the time to retirement time formated
return $this->formatTimeInterval(
$this->timeToRetirement,
'%r%Y years, %m months, %d days'
);
}
//Format the dateInterval numbers as string
public function formatTimeInterval($aDateDif, $format)
{
return $aDateDif->format($format);
}
ここでデータベースに格納される唯一の値はで、従業員の退職年 (birthDay + 60 年) を生成します$this->getBirthDay()
。誰かを退職させるために残された時間を与え、日付の間隔をフォーマットするために使用されます。getRetireYear
getTimeToRetirement
formatTimeInterval($,$)
ここで、この dateInterval をさまざまな形式で使用できるようにする必要があります。たとえば、ビュー内の他の値と整数として比較するために年が必要な場合があるため、ビューでアクセスできるようにするために、今年は単一の値として必要です。
私はいくつかのことを試しましたが、それを行う正しい方法がわからないため、この問題についてより良い結論を得ることができませんでした.
また、年だけでなく、他のタスクのために月と日が必要になる場合もあります。コントローラーでは、オブジェクトの ArrayColletion を検索してビューに渡すだけなので、この値はビューでアクセスできる必要があります。配列コレクションをアップダウンします。
問題の詳細については、このスレッドを読むことができます