in Rails 3.0.10Perché gli indici Rday Weekday sono diversi da quelli di Ruby?
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
E
ruby-1.9.2-p180 :011 > Date.today
=> Mon, 10 Oct 2011
ruby-1.9.2-p180 :012 > Date.today.wday
=> 1
Quindi, Lunedi è 0 nella mappatura tempo, e 1 nella mappatura Data.
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/time/calculations.rb
mi sento come iniziare con la Domenica come zero è il più sicuro, più comune, più probabilità di essere compreso da qualcun altro modo di fare le cose. Speravo di capire la storia/il ragionamento nel caso in cui trascuri qualcosa.
Il mio caso d'uso: sto memorizzando il giorno della settimana esplicitamente nel mio db. Immaginavo che memorizzare come un intero sarebbe più efficiente e più facile da utilizzare rispetto alla memorizzazione di "lunedì", "martedì", ecc.
PS Ho avuto la grande idea di fare qualcosa come il seguente. Mappa avanti e indietro dalle stringhe dei giorni feriali all'interno dei metodi (nascondendo il numero intero).
ruby-1.9.2-p180 :010 > Time::DAYS_INTO_WEEK
=> {:monday=>0, :tuesday=>1, :wednesday=>2, :thursday=>3, :friday=>4, :saturday=>5, :sunday=>6}
Time::DAYS_INTO_WEEK[day_of_week.downcase.to_sym]
Time::DAYS_INTO_WEEK.to_a.select{|k, v| v == start_day }.first.first.to_s.capitalize
Non so perché gli indici sono come sono, ma eseguendo 'Date.today.wday' in' irb' e 'rails c' entrambi riportano lo stesso giorno della settimana (cioè 1 per lunedì). Stesso risultato con 'Time.now.wday'. Inoltre potresti trovare utile questa [informazione] (http://makandra.com/notes/1074-deal-with-different-ways-of-counting-weeks-and-weekdays-in-ruby). – Zabba
Sei corretto. Il "problema" che ho è che esiste una mappatura accessibile che è incoerente. Speravo di usare un hash interno per la mia mappatura. (e grazie per il link) –
E in binari sono in realtà costanti - http://api.rubyonrails.org/classes/Date.html Mi aspettavo di avere un'impostazione per il ritiro all'inizio della settimana. – Ninad