In Rails, sono un po 'confuso sulla guida tra quando utilizzare DateTime.now.utc e Time.current. Sembrano esserci opinioni divergenti all'interno del framework su quale sia il migliore, in particolare nelle diverse versioni.Quando deve essere usato `DateTime.now.utc` vs.` Time.current.utc` in Rails?
Sembra DateTime.now.utc
produce un timestamp con un offset zeroUTC, mentre Time.current.utc
produce un timestamp con un fuso orario UTC. Sembra una sottile distinzione, ma è piuttosto importante in molti casi (ad es. Calcoli di DST).
Quando utilizzare DateTime.now.utc
e quando si deve utilizzare Time.current.utc
? C'è qualche ragione per usare DateTime.now.utc
invece di Time.current.utc
?
Puoi dare un esempio di dove fa la differenza? Dato che UTC non ha transizioni per l'ora legale, sicuramente fa la differenza quando inizi a utilizzare altri fusi orari ... (Non conosco Ruby, ma ho fatto un bel po 'di roba data/ora, quindi con più background potrei essere in grado di aiutarti.) –
@JonSkeet: non so se faccia la differenza. (Ecco perché sto chiedendo quale dovrei usare!) 'DateTime.now.utc' prima richiama' DateTime.now', e quindi inverte l'offset UTC per arrivare all'ora "UTC". Quindi notate che non si traduce tra _time zones_, ma piuttosto tra _offsets_. Potrebbe essere problematico nei casi limite, ad esempio, l'infame esempio 1927-1928 a Shanghai? –
@JonSkeet: a meno che non si sia effettivamente in UTC, quindi "DateTime.now' e" Time.current "producono entrambi un'ora locale in qualcosa di diverso da UTC. In altre parole, sembrano differire nei loro approcci su come si convertono in UTC - lo si fa applicando un offset in modo diretto; l'altro esegue effettivamente i calcoli del fuso orario nel nuovo fuso orario di UTC. –