秒数を日付に変換し、時差を日、時間、秒として表示する必要があります。
しかし、何らかの理由で、数日後、次の丸一日前の最後の時間に、負の時間値が得られます。現在、この問題は、日付が 38 日を超えている場合に発生します (11 月 1 日より前)。明日はこの値が変わるかもしれませんが、わかりません。
コード:
$s = 84600; // 23.5 h in seconds
$s += (60*60*24)*38; // add 38 days in seconds
$d = (new \DateTime())->modify("-".$s."seconds");
echo (new \DateTime())->diff($d)->format("%a days %h:%I");
// shows: 38 days -1:30
1日の違いがある同じコード:
$s = 84600; // 23.5 h in seconds
$s += (60*60*24)*37; // add 37 days in seconds
$d = (new \DateTime())->modify("-".$s."seconds");
echo (new \DateTime())->diff($d)->format("%a days %h:%I");
// shows: 37 days 23:30
PHP バージョン 5.6.2。ローカルホスト、サーバー、およびhttp://sandbox.onlinephpfunctions.com/でテストされ、同じ結果が得られました。