【问题标题】:dealing with 'worked time'处理“工作时间”
【发布时间】:2012-09-18 14:49:18
【问题描述】:

我正在开发一个应用程序,该应用程序将跟踪用户的工作时间,然后根据这些数据生成图形...
考虑到他们今天可以开始任何任务并在明天完成,我无法保存Date... 到目前为止,我正在保存一个整数字段,如 hours 和一个整数 minute...
有没有办法(也许是一些宝石)来帮助我处理这种问题?
还是其他方法?
谢谢

我的班级Atendimento 包含所有必要的数据

class Atendimento < ActiveRecord::Base
  attr_accessible :horas, :minutos, :empresa, :tipo_atendimento, :observacao, :empresa_id, :tipoatendimento_id

  belongs_to :empresa
  belongs_to :tipo_atendimento, :foreign_key => 'tipoatendimento_id'
  belongs_to :usuario

  validates :horas, :minutos, presence: true
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 date time


    【解决方案1】:

    我会在您的数据库中添加两个日期时间列来跟踪事件的开始和停止时间戳。然后你可以减去这两个值来得到经过的时间。

    【讨论】:

    • 我不是很清楚...我不能这样做,因为用户可以在离营业时间结束仅剩 5 分钟的时候开始任务,然后改天继续任务。 ..他甚至可以从今天开始任务,并在一周内完成任务
    【解决方案2】:

    您应该添加开始和结束时间作为时间戳,而不是三个字段。您可以通过将这些行添加到迁移文件中来做到这一点:

    add_column :tasks, :started_at, :timestamp
    add_column :tasks, :ended_at, :timestamp
    

    然后,您可以在模型中使用这些时间戳进行计算。

    class Task < ActiveRecord::Base
      attr_accessible :started_at, :ended_at
      validates :started_at, presence: true
      validates :ended_at, presence: true
    
      # Returns the duration of the task in seconds
      def duration
        ended_at - started_at
      end
    end
    

    【讨论】:

    • 请看我对@Beerlington 回答的评论
    • @LuizE。好的。我仍然会像这样将开始和结束时间戳记录到数据库中。然后你只需要为持续时间函数想出更复杂的逻辑。如果任务可以在周末完成,您可能还需要考虑周末和节假日。也许有人可以scetch一些伪代码? (我什至可以稍后再做)。
    • @LuizE。我建议你看看这个问题:stackoverflow.com/questions/3708881/…
    • @LuizE。因此,您应该能够计算任务时间范围内的完整工作日数,并将其乘以每个工作日的工作秒数。当然,除此之外,您还必须添加时间范围的第一天和最后一天的剩余小时数。不好的解释,但我希望你明白这一点:)。
    【解决方案3】:

    我将工作时间保存为秒:)

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多