Je construis un nouveau système chronométrique pour mon entreprise, et je suis un peu de difficulté à trouver comment ajouter des différences de temps entre tous les horodateurs à une date donnée ...Décalage horaire entre le temps multidisque Timbres
ici a mon avis ....
<% @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 %>
qui produit cette ...
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 ce que je voudrais est de pouvoir compter le temps pour chaque jour, et un total pour tous . Je sais comment obtenir le décalage horaire entre deux fois, mais je n'arrive pas à comprendre la différence de temps entre une série de fois tout au long de la journée ....
J'ai cherché sur Internet un exemple de ce que Je suis en train d'accomplir, et suis venu vide ... Toutes les idées seraient grandement appréciés ....
... Merci
EDIT)
Voici mon code de contrôleur avec une partie de la solution mise en œuvre, et cela me donne un total, cependant, je ne peux pas le faire tous les jours à cause de la façon dont j'utilise un hash ordonné. ..
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
Je suis un peu confus par vos données. On dirait que quelqu'un a donné un coup de poing dimanche à 12h15 et n'a pas donné de coup de poing avant mardi à 11h10. C'est un assez long changement. –
je suppose que ce serait lol, mais ce n'est que des données d'échantillon, et je n'ai pas écrit de validations pour attraper de telles choses encore ... J'essaie juste d'assembler les écrous et les boulons maintenant .... –
Donc les vraies données devraient a toujours l'air de '[punch-in, punch-out, punch-in, punch-out, ...]' alors? –