gpt4 book ai didi

ruby-on-rails - 阵列时间戳之间的时间差

转载 作者:数据小太阳 更新时间:2023-10-29 08:53:03 27 4
gpt4 key购买 nike

我正在为我的公司构建一个新的时钟系统,但我在弄清楚如何在特定日期的所有时间戳之间添加时差时遇到了一些麻烦...

这是我的观点......

<% @punches_days.sort.each do |day, punches|%>

<h3><%= day.strftime('%A %D') %></h3>
<table>
<tr>

<th>Status</th>
<th>Comment</th>
<th>Time</th>
<th></th>
<th></th>
</tr>

<% for punch in punches %>
<tr>

<td><%= punch.status %></td>
<td><%= punch.comment %></td>
<td><%= punch.created_at.in_time_zone(punch.user.time_zone)%></td>
<td><%= link_to 'Show', punch %></td>
<td><%= link_to 'Edit', edit_punch_path(punch) %></td>
<td><%= link_to 'Destroy', punch, :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>


<% end %>

产生这个...

  Sunday 11/06/11

Status Comment Time
In 2011-11-06 08:00:00 -0500 Show Edit Destroy
Lunch 2011-11-06 12:00:00 -0500 Show Edit Destroy
In 2011-11-06 13:00:00 -0500 Show Edit Destroy
Out 2011-11-06 16:00:00 -0500 Show Edit Destroy

Tuesday 11/08/11

Status Comment Time
In 2011-11-08 08:00:00 -0500 Show Edit Destroy
Lunch 2011-11-08 12:15:00 -0500 Show Edit Destroy
In 2011-11-08 13:00:00 -0500 Show Edit Destroy
Out 2011-11-08 16:41:00 -0500 Show Edit Destroy

I 我想要的是能够计算每一天的时间,然后计算所有人的总时间。我知道如何获得两个时间之间的时差,但我无法全神贯注地获得一天中一系列时间之间的时差....

我已经在互联网上搜索了一个我正在努力完成的例子,但结果是空的……任何想法将不胜感激……

谢谢...

编辑)

这是我的 Controller 代码,实现了部分解决方案,这确实给了我一个总数,但是,由于我使用有序哈希的方式,我不能每天都这样做......

def timecard
@punches = Punch.timecard(params[:user])
@punches_days = @punches.group_by { |t| t.created_at.beginning_of_day}
@in_out_lengths = @punches.each_slice(2).map { |a| a[1].created_at - a[0].created_at }
@total = ((@in_out_lengths.inject(:+))/1.hour).round


respond_to do |format|
format.html # timecard.html.erb
format.json { render :json => @punches }
end
end

最佳答案

punches 中给定一组对象,并且它们成对出现,第一个是打洞,第二个是打洞,那么这样的事情会给你持续时间:

in_out_lengths = punches.each_slice(2).map { |a| a[1].created_at - a[0].created_at }
total = in_out_lengths.inject(:+)

in_out_lengths 数组将包含每个打入/打出对的时间跨度,total 将是当天的总时间。如果您认为数字索引看起来很难看,您也可以使用 firstlast:

punches.each_slice(2).map { |a| a.last.created_at - a.first.created_at }

唯一的技巧是使用 each_slice将当天的输入/输出数组切成所需的对。一旦你有了它,mapinject非常简单。当然,所有这些都假设 punches 已正确设置和验证。

关于ruby-on-rails - 阵列时间戳之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8055640/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com