Tag: datetime

参数超出范围Rails 4和bootstrap3-datetimepicker-rails

我正在使用bootstrap3-datetimepicker-rails gem让用户在我的应用程序中存储WorkOrder的scheduled_date (’DateTime’属性),但当用户提交表单以创建时,我得到一个argument out of range错误的argument out of range WorkOrder ,日期与用户弹出打开编辑屏幕时选择的日期非常不同。 有趣的是,它曾经工作,但我不知道什么代码可以改变来打破它。 我添加了所需的依赖项并在我的CSS / JS文件中包含了正确的指令: gem ‘momentjs-rails’, ‘~> 2.5.0’ gem ‘bootstrap3-datetimepicker-rails’, ‘~> 3.0.0’ 据我所知,我的代码看起来与文档中的示例相同。 这是我的表格的片段: $(function () { $(‘#service_date_picker’).datetimepicker({ icons: { time: “fa fa-clock-o”, date: “fa fa-calendar”, up: “fa fa-arrow-up”, down: “fa fa-arrow-down” } }); }); 编辑(忘了添加控制器代码 – 超级简单): work_orders_controller.rb def create @work_order = WorkOrder.new(work_order_params) […]

UTC时间重置为2000-01-01(ruby)。 如何防止重置时间?

我正在使用任务和电子表格gem将excel电子表格读入我的数据库。 我正在读的其中一个栏目是“start_time”。 为此,我正在形成一个值数组,然后逐个传递每个数组值。 cnum_array = [] # for start times sheet1.each 3 do |row| unless row[9].blank? time = Time.parse(row[9]) cnum_array << time.utc end end count = 0 for course in Course.all course.update_attribute :start_time, cnum_array[count] count += 1 end 这似乎工作正常。 如果我在最后一个循环中插入“puts course.start_time”语句,则会打印出正确的时间。 像这样: count = 0 for course in Course.all course.update_attribute :start_time, cnum_array[count] puts course.start_time count […]

需要正则表达式模式以将日期与可选时间匹配

我需要一个与日期和可选时间匹配的正则表达式模式。 日期应为m/d/yyyy格式的有效美国日期。 时间应该是h:mm:ss am/pm或24小时时间hh:mm:ss 。 比赛:2011年9月1日| 2011年9月1日上午10:00 | 9/1/2011 10:00 AM | 2011年9月1日10:00:00 这个模式将用于Ruby on Rails项目,因此它应该是可以通过Ruby使用的格式。 请参阅http://rubular.com/进行测试。 这是我现有的日期模式(可能是过度杀戮): DATE_PATTERN = /^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}/

ruby / rails的自然语言日期解析器

有没有人知道类似于Ruby中的Date.js ? 能够从“今天两周”之类的东西返回日期对象的东西。 Remember the Milk webapp将此function集成到他们的系统中,并且非常易于使用。 我会使用Date.js库本身,但因为它在客户端,它有其局限性。 如果用户未启用javascript,则function将丢失。 这将影响移动电话用户,理想情况下,他们将通过短信(短信)使用我们的系统。 我很想使用已经存在的解决方案,但如果没有将这些代码移植到Ruby中会有多难? 我真的不太了解自然语言的解释,但似乎需要一些时间。 谢谢。

Ruby中DateTime的毫秒分辨率

我有一个像2012-01-01T01:02:03.456这样的字符串,我使用ActiveRecord存储在Postgres数据库TIMESTAMP中。 不幸的是,Ruby似乎砍掉了毫秒: ruby-1.9.3-rc1 :078 > ‘2012-12-31T01:01:01.232323+3’.to_datetime => Mon, 31 Dec 2012 01:01:01 +0300 Postgrs支持微秒级分辨率。 如何才能相应地保存我的时间戳? 我需要至少毫秒的分辨率。 (PS是的,我可以在postgres中以毫秒整数列进行破解;这种方式会破坏ActiveRecord的整个目的。) 更新: 非常有用的响应表明,Ruby的DateTime并没有缩短毫秒数; 使用#to_f显示它。 但是,做: m.happened_at = ‘2012-01-01T00:00:00.32323’.to_datetime m.save! m.reload m.happened_at.to_f 是否丢弃毫秒。 现在,有趣的是,在Rails和Postgres中, created_at确实显示毫秒。 但其他时间戳字段(如上面的happen_at)则没有。 (也许Rails对created_at使用NOW()函数而不是传入DateTime)。 这导致了我的终极问题: 如何让ActiveRecord在时间戳字段上保留毫秒分辨率?

在显示日期时,使Rails忽略夏令时

我在我的Rails应用程序中有一个以UTC格式存储的日期,并且我正在尝试将其显示给以”Eastern Time (US & Canada)”作为其时区的用户。 问题是导轨不断将其转换为东部夏令时(EDT),因此午夜显示为早上8点 ,应该是早上7点 。 反正有没有阻止DST转换? >> time = DateTime.parse(“2013-08-26T00:00:00Z”) => Mon, 26 Aug 2013 00:00:00 +0000 >> time.in_time_zone(“Eastern Time (US & Canada)”) => Sun, 25 Aug 2013 20:00:00 EDT -04:00 更新 我最终对@zeantsoi的方法进行了改进。 我不是添加太多rails帮助器的忠实粉丝所以我扩展了活动支持的TimeWithZone类。 class ActiveSupport::TimeWithZone def no_dst if self.dst? self – 1.hour else self end end end 现在我可以做time.in_time_zone(“Eastern Time (US & […]

如何在Ruby中更改DateTime的时区?

在保持时区不变的同时读取,写入和序列化日期和时间变得令人讨厌。 我正在使用Ruby(和Rails 3.0)并试图改变DateTime的时区。 (到UTC)但不是时间本身。 我要这个: t = DateTime.now t.hour -> 4 t.offset = 0 t.hour -> 4 t.utc? -> true 我最接近的是这个,但它并不直观。 t = DateTime.now t.hour -> 4 t += t.offset t = t.utc t.hour -> 4 t.utc? -> true 有没有更好的方法?