簡體   English   中英

Rails Activerecord 日期從 20 到 20

[英]Rails Activerecord where date from 20 to 20

我只需要展示一個月20號到下個月20號之間的作品(每個月20號到20號)

我看到兩種情況:

1.- 如果我在任何一個月的 15 歲(或低於 20 歲),我必須從上個月的 20 日到今天顯示。

2.- 如果我在任何一個月的 25 歲(或高於 20 歲),我必須從本月 20 日到今天顯示。

我不知道類似這樣的東西的語法

if Date.today.day > 20
  @works = Work.where(created_at: "20 of this month to Date.today")
else
  @works = Work.where(created_at: "20 of last month to Date.today")
end
date = Date.today.change(day: 20)
date -= 1.month if date > Date.today
@works = Work.where(created_at: date..(date + 1.month))

根據您的具體要求,最后一個條件可以是以下任何一種:

date..(date + 1.month)
date...(date + 1.month)
date..date.today
date...date.today

我做過一次這樣的事情(這是從 memory 寫的,未經測試)

if Date.today.day > 20
  start_day = Date.new(Date.today.year, Date.today.month, 20)
  end_day   = start_day + 1.month
else
  start_day = Date.new(Date.today.year, Date.today.month, 20) - 1.month
  end_day   = Date.new(Date.today.year, Date.today.month, 20)
end

Work.where(created_at: start_day..end_day)

它看起來像這樣:

# The ".." sets a range, (from)..(to)
if Date.today.day > 20
  @works = Work.where(created_at: (Date.today - 20)..(Date.today))
else
  @works = Work.where(created_at: (Date.today.change(day: 20))..(Date.today))
end

您可能還想查看文檔以了解其他 DateTime 計算:)

謝謝大家,我接受了你的想法和這項工作

if Date.today.day > 20
  @works = Work.where(created_at: ((Date.new((Date.today.year),(Date.today.month),21)))..Date.today)
else
  @works = Work.where(created_at: ((Date.new((Date.today.year),(Date.today.month),21)) - 1.month)..Date.today)
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM