Tag: 日期

Rails datetime_select以UTC格式发布当前时间

我正在尝试将用户为开始日期和结束日期选择的内容与当前时间进行比较,以防止用户选择过去的时间。 它的工作原理除了你需要选择一个时间,在我的情况下,提前4个小时才能通过validation。 视图: datetime_select(:start_date, ampm: true) 控制器: if self.start_date < DateTime.now || self.end_date < DateTime.now errors.add(:date, 'can not be in the past.') end self.start_date返回我当前的时间但是在utc中这是错误的。 DateTime.now返回当前时间,但偏移量为-0400,这是正确的。 例: 我现在的时间是2013-10-03 09:00:00.000000000 -04:00 self.start_date是2013-10-03 09:00:00.000000000 Z. DateTime.now是2013-10-03 09:00:00.000000000 -04:00 为什么会发生这种情况以及解决问题的最佳方法是什么?

如何使用Ruby on Rails查找今天,昨天等的记录?

我想找到所有的记录,比如Posts,今天用Ruby on Rails创建,然后是昨天创建的所有post,等等……我该怎么办? 谢谢, 凯文

RoR – 来自数组的collection_select

我有点阵: @dates= [‘2013-11-01’, ‘2013-11-02’, ‘2013-11-03’, ‘2013-11-04’, ‘2013-11-05’] 我怎样才能将这些数组放在视图中的collection_select中? 我试过了: … …

加速日期#parse&Date#strptime在Ruby中,更优雅的方式还是最佳实践?

此问题源于处理带有日期格式字符串的大型文本的另一个性能问题。 将数据从csv文件加载到ruby数组后,效率最低的部分将360,000个日期格式化的字符串对象解析为日期对象。 它需要超过50%的CPU时间。 关于在SO中解析字符串到日期的最有效方法存在一些问题。 但是大多数都已经过时了,并且他们都没有考虑过这种情况,即在所有这360,000条记录中只有5个日期对象真正应该被解析。 更常见的是,对于企业应用程序,所需的所有日期可能在5年或10年之内,即大约2,000到4,000个日期。 如果我需要从文件或数据库中获取一天只有100个数据记录,则不需要99%的CPU时间用于解析日期和创建日期对象。 这是我的尝试 定义StaticDate类以通过存储之前解析的日期对象来提高性能。 require ‘date’ class StaticDate @@all={} def self.instance(p1 = nil, p2 = nil, p3 = nil, p4 = Date::JULIAN) @@all[p1*10000+p2*100+p3] ||= Date.new p1, p2, p3, p4 end def self.parse( date_str) @@all[date_str] ||= Date.parse date_str end def self.strptime( date_str, format_str) @@all[date_str + format_str] ||= Date.strptime date_str, format_str end […]

Rails范围在月内创建

我在编写模型范围时遇到了一些问题。 我想基于它们发布的月份来过滤我的模型对象,即模型BlogPost: scope :published_in_month, ->(date) { where(published_date: date.at_beginning_of_month..date.at_end_of_month) } 所以这是我的控制器方法: def list_by_month @date = Time.parse(“#{params[:year]}/#{params[:month]}”) puts “DATE IS #{@date}” @posts = BlogPost.published_in_month(@date).page(params[:page]).per(10) render :index end 所以打印出来的日期我看到的是: DATE IS 2013-12-01 00:00:00 +0100 但是在我的日志和我看到错误月份的post的页面中,这是一个条目日志: SELECT “blog_posts”.* FROM “blog_posts” WHERE (“blog_posts”.”published_date” BETWEEN ‘2013-11-30 23:00:00.000000’ AND ‘2013-12-31 22:59:59.999999’) LIMIT 10 OFFSET 0 这个2013-11-30来自于我的输入日期是2013-12-01 ,如果我错误地用它来产生不正确的查询,我怎么能重写我的范围

rails保存到mysql DB之前更改日期格式

我有一个我希望以MM / DD / YYYY显示的日期选择器。 但是我正在使用一个想要YYYY-MM-DD的mysql数据库。 因为它现在正在保存,但日期和月份正在逆转。 现在我有一个initalizer,date_time_formats.rb,它有: Date::DATE_FORMATS[:default] = ‘%m/%d/%Y’ 同样在我的datepicker jscript中,我有正确的格式,我想显示: $(this).datepicker({“format”: “mm/dd/yyyy”, “weekStart”: 0, “autoclose”: true, “startDate”:new Date()}); 我尝试过这样的事情: Date.strptime(params[:location], “%d/%m/%Y”) 但是我得到了HashWithIndifferentAccess错误。 在分配给模型实例之前,如何在params哈希中重新格式化日期? 原因是如果日期无效(例如,2013年4月4日是好的,但2013年4月20日不是因为没有20个月),它似乎会被拒绝。 我是一个很大的时间轨道新手,所以也许我错了,但这就是它似乎工作。 谢谢!

在ruby中转换日期格式需要一些帮助

以下是一些输出: Date.today => Mon, 25 Jun 2012 Date.today.to_formatted_s(:long_ordinal) => “June 25th, 2012” Date.today.strftime(‘%A %d, %B’) => “Monday 25, June” 现在我需要输出格式,即: Monday 25th, June or Thrusday, 1st, October 问题是to_formatted_s和strftime仅适用于日期和两者或它们返回字符串。 如何以我需要的方式获得输出。

Rails日期与Date.today相比

我有一个Date格式的birth_date变量。 我想将它与Date.today进行比较,如下所示。 问题是它回来是假的,因为它想要比较年份。 这是一个生日,所以我不关心今年只是想看看birth_date(月和日)是否等于Date.today.day.month。 有任何想法吗? bdays = Soldier.find(:all, :conditions => [“birth_date LIKE ?”, Date.today] )

如何针对特定范围validation模型的日期属性(在运行时评估)

我有几个带有日期属性的模型,对于每个模型,我想根据给定的范围validation这些日期。 一个基本的例子是: validates_inclusion_of :dated_on, :in => Date.new(2000,1,1)..Date(2020,1,1) 理想情况下,我想在运行时使用与named_scope使用类似的方法来评估日期范围,例如: validates_inclusion_of :dated_on, :in => lambda {{ (Date.today – 2.years)..(Date.today + 2.years)}} 上述方法当然不起作用,那么实现相同结果的最佳方法是什么?

Rails – 返回select标签的月份数组

我在Rails 2.3.8上的应用程序中,需要返回一个月份名称和数字的数组,以插入到options_for_select语句中。 到目前为止我所做的是有点工作,但不是真的。 我这样做的原因是因为select语句需要一个提示,默认情况下你不能在2.3.8中给出options_for_select(至少据我所知)。 这是我到目前为止: @months = [[‘-‘, ”]] (1..12).each {|m| @months << [[Date::MONTHNAMES[m], m]]} 所以我想要返回的是这样的选项: January February 但是,相反,我得到: January1 February2 我错过了什么?