📖
【Rails】期限から残日数を計算【メモ】
概要
- 購入したチケットの有効期限(残日数)を表示したい
- チケット期限は30日間
結論
最終コード
<p>期限が切れるまで後<%= (ticket.created_at.since(30.days).end_of_day - Time.zone.now).to_i / 1.day %>日</p>
# 期限が切れるまで後◯○日
過程(デバッグ)
必要なこと
- データ作成日に30日間を追加。(期限が30日間のため)
- その日の終わりの時刻に変更。
- 上記の値から現時刻を減算し、日数の差分を取得
対象の時刻をticket.created_atに変換
デバッグ
# 現時刻
Time.zone.now
# 2022-03-11 00:45:25 +0900
# 現時刻から30日後
Time.zone.now.since(30.days)
# 2022-04-10 00:45:25 +0900
# 現時刻から30日後の終わりの時刻
Time.zone.now.since(30.days).end_of_day
# 2022-04-10 23:59:59 +0900
# 現時刻と30日後の秒数差分
(Time.zone.now.since(30.days) - Time.zone.now).to_i
# 2591999
# 1日の秒数
1.day
# 86400
# 現時刻と30日後の日付差分(1日の秒数で割る)
(Time.zone.now.since(30.days) - Time.zone.now).to_i / 1.day
# 29
# 上記のように現時刻から差分を求めると29日表示になってしまう可能性があるので、購入日の終わりの時刻に変換
(Time.zone.now.since(30.days).end_of_day - Time.zone.now).to_i / 1.day
# 30
# 【完成】 チケット作成時から30日後と現時刻の日付差分
(ticket.created_at.since(30.days).end_of_day - Time.zone.now).to_i / 1.day
Discussion