登录 主页

在Rails中获取两个输入日期之间的所有日期(日期类型为TimeWithZone)

2024-06-23 11:19AM

参考:https://stackoverflow.com/a/4495765/25407982

我想获取“开始日期”和“结束日期”这两个日期之间所有的日期,TimeWithZone 对象包含年、月、日、时间部分(时、分、秒)等日期信息。

它可以将 Time, DateTimeTimeWithZone 对象转换为 Date 对象,转换后,只保留日期部分,时间部分被忽略。

可以使用 to_date 这个方法:

start_date = date start.to_date
end_date = date end.to_date
(start..end).to_a

eg:

先测试一下这个方法是否可以正常使用:$ bundle exec rails c

irb(main):009:0> Article.last.created_at
  Article Load (0.3ms)  SELECT  `articles`.* FROM `articles`  ORDER BY `articles`.`id` DESC LIMIT 1
=> Sun, 23 Jun 2024 11:07:00 CST +08:00
irb(main):008:0> Article.last.created_at.to_date
  Article Load (0.5ms)  SELECT  `articles`.* FROM `articles`  ORDER BY `articles`.`id` DESC LIMIT 1
=> Sun, 23 Jun 2024

代码示例:

CsvRecord.all.each do |row| 

  start_date = row.entered_at.to_date

  end_date = Date.leaved_at.to_date

  (start_date .. end_date).each do |date|

    puts date

  end

end

 

 

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论