/** * 経過% * @dataProvider daysPassedpercentProvider */ public function testGetDaysPassedPercent($timestamp, $expected) { $allow = 1 / (365 * 86400) * 100 / 2; // 平年 0.5 秒分の誤差まで許容 $timeZoneUTC = new \DateTimeZone('UTC'); $target = new MyDateTime("@{$timestamp}", $timeZoneUTC); $this->assertEquals($expected, $target->getDaysPassedPercent(), '', $allow); }
/** * 日付をフォーマットして返す * * @return string 例: 今日 15/1/20 は第04週目の水曜日です。今年の5.2%が経過しました。 */ public static function formatDateTime(DateTime $datetime) { return sprintf('今日 %1$s は第%2$d週目の%3$s曜日です。今年の%4$.1f%%が経過しました。', $datetime->format('Y/m/d'), $datetime->format('W'), $datetime->getWDayName(), $datetime->getDaysPassedPercent()); }