Tag: datetime

如何在ActiveSupport的TimeZone类中设置时区

我试图将文本解析为使用ruby中的慢性日期。 但是,在尝试解析字符串时,我一直遇到错误。 错误: NoMethodError – undefined method ‘zone=’ for Time:Class: 这是代码: require ‘rubygems’ require ‘sinatra’ require ‘chronic’ require ‘date’ require ‘time’ require ‘active_support’ require ‘cgi’ require ‘json’ module TimeAPI ZoneOffset = { ‘A’ => +1, ‘ADT’ => -3, ‘AKDT’ => -8, ‘AKST’ => -9, ‘AST’ => -4, ‘B’ => +2, ‘BST’ => +1, ‘C’ => […]

保存到数据库的不同日期 – 错误的时区

当我使用Javascript从FullCalendar获取日期时,我有以下值: Fri Sep 13 2013 08:30:33 GMT-0400 (EDT) 将该日期保存到数据库后,我发现在数据库中有不同的值: 2013-09-13 12:00:00.000000 因此,date会自动转换为UTC并像这样保存到数据库中。 如何将正确的日期保存到数据库中? 我不想硬编码:) 谢谢。

如何在不同时区显示Rails表单日期时间选择?

我想在其首选时区向用户提供日期时间选择,但将日期时间存储为UTC。 目前,默认行为是使用UTC显示和存储日期时间字段。 如何在不影响整个应用程序的情况下更改此字段的行为(即不更改应用程序默认时区)? 更新:这不是每用户时区。 我不需要调整时间显示方式。 只有这些特定字段处理不同的时区,所以我希望用户能够指定此时区的时间。

具有不同日期/时间格式的ActiveRecord

我们有一个应用程序,用户可以设置他/她的首选日期/时间格式。 用户应在整个应用程序中以配置的格式输入datetime时间。 现在的问题是,在create/update ActiveRecord时,几种格式的datetime被错误地解析。 例如,用户已将日期/时间格式设置为hh:mm dd/MM/yyyy 。 现在,如果用户输入17:00 04/05/2012则将其解析为5 PM 5 Apr, 2012 5 PM 4 May, 2012 ,应该是5 PM 5 Apr, 2012 5 PM 4 May, 2012 1.8.7 :004 > a = Article.create!(:name => ‘a1′, :published_at => ’17:00 04/05/2012’) => # 我知道ruby / rails具有预定义的格式集,日期/时间字符串将根据这些格式进行评估,如果按顺序匹配任何格式,它将使用该格式解析给定的字符串。 另一个例子 1.8.7 :006 > a = Article.create!(:name => ‘a1’, :published_at […]

rails – 在保存到服务器之前将DateTime转换为UTC

我不知道如何,但我的控制台和我的服务器有两个不同的DateTime.now时区。 如果我在控制台中运行DateTime.now,则返回以下内容: Wed, 04 Dec 2013 14:27:23 -0500 但是,我的任务模型中有以下内容: def self.already_expired where(“time_frame < ?", DateTime.now) end 上面代码的目标是在’time_Frame’是过去日期的任务上触发一些任务方法。 这是我调用方法的地方: task :change_it => :environment do puts “yo yo you yo you” @tasks = Task.already_expired @tasks.each do |task| puts “Kalabar” + task.inspect + “now time is:” + DateTime.now.to_s end end 服务器日志显示如下: Task Load (1.2ms) SELECT “tasks”.* FROM “tasks” […]

Ruby中的DateTime.parse() – 是否依赖于语言环境?

想知道以下示例的输出:解析01/03 :它将被解析为Mar, 1st (而不是Jan, 3rd )?

如何测试两个时间范围是否重叠?

我需要实现预订function,并确保预订不会在Rails应用程序中重叠。 cover? between? 方法不是我需要的。 与同一型号上的其他潜在范围相比,我必须确保时间范围的唯一性,并且有效地进行。 我认为可以使用overlaps?来完成它overlaps? 。 问题是,对于这样的事情,它返回TRUE: (1..5).overlaps?(5..9) => true 如果我比较了另一个开始时的预订( 3:30 – 4:00对4:00 – 4:30 ),它会说它们确实重叠,但技术上并没有。 那会是个问题吗? ValidatesOverlap似乎处理问题,包括边缘重叠。 有什么建议?

测试ActiveSupport :: TimeWithZone对象是否相等

有人可以解释d1如何大于d2? 他们是相同的日期(或至少他们看起来如何)。 Loading development environment (Rails 3.0.8) ruby-1.9.2-p180 :001 > d1 = Event.first.updated_at => Thu, 22 Sep 2011 02:24:28 PDT -07:00 ruby-1.9.2-p180 :002 > d2 = Time.zone.parse(“2011-09-22T02:24:28-07:00”) => Thu, 22 Sep 2011 02:24:28 PDT -07:00 ruby-1.9.2-p180 :003 > d1.class => ActiveSupport::TimeWithZone ruby-1.9.2-p180 :004 > d2.class => ActiveSupport::TimeWithZone ruby-1.9.2-p180 :005 > d1 > d2 => true […]

ruby Date.today和DateTime.now的错误日期

我用RVM安装了ruby-1.8.6-p383。 系统ruby是1.9.1_p378-1 使用ruby 1.8时,我从Date.today和DateTime.now得到错误的日期。而Time.now是正确的: irb(main):002:0> DateTime.now.to_s => “2126–1-10618T11:23:43+00:00” irb(main):004:0> Date.today.to_s => “2126–1-10618” irb(main):005:0> Time.now => Thu Jan 28 11:55:27 +0000 2010 如果我切换到ruby 1.9,一切都很好: irb(main):003:0> DateTime.now.to_s => “2010-01-28T11:58:51+00:00” irb(main):004:0> Date.today.to_s => “2010-01-28” irb(main):005:0> Time.now => 2010-01-28 11:59:05 +0000 有关如何让DateTime在ruby 1.8中正常工作的任何建议都将非常感激!

使用范围在ActiveRecord中的多个DateTime范围内返回结果

我有一个Session模型,它具有:created_at日期和:start_time日期,两者都存储在数据库中:time 。 我目前正在一个庞大的表上吐出一堆结果,并允许用户使用范围按单个日期和可选的时间范围过滤结果,如下所示: class Session DateTime.strptime(date, ‘%m/%d/%Y’)..DateTime.strptime(date, ‘%m/%d/%Y’).end_of_day ) } scope :filter_by_time, lambda { |date, time| to = time[:to] from = time[:from] where(:start_time => DateTime.strptime(“#{date} #{from[:digits]} #{from[:meridian]}”, ‘%m/%d/%Y %r’).. DateTime.strptime(“#{date} #{to[:digits]} #{to[:meridian]}”, ‘%m/%d/%Y %r’) ) } end 控制器看起来或多或少像这样: class SessionController :created_at) end end end 我需要允许用户使用多个日期过滤结果。 我收到了params作为字符串格式的逗号分隔列表,例如”07/12/2012,07/13/2012,07/17/2012″ ,并且需要能够在数据库中查询几个不同的日期范围和这些日期范围内的时间范围,并合并这些结果,例如7月12日,7月13日和7月17日下午6:30至7:30之间的所有会话。 我一直在寻找各种不同的东西,但我无法弄清楚如何实际做到这一点。 这是否可以使用范围? 如果不是最好的方法是什么? 我最接近的猜测看起来像这样,但它没有返回任何东西,所以我知道这是错的。 scope :filter_by_date, lambda { […]