2013-06-01 13 views
8

Sto cercando di ottenere lo scostamento UTC per un datetime. Il datetime viene salvata come:Ottieni offset UTC in Ruby

Fri, 31 maggio 2013 15:19:08 EDT -04: 00

Quello che mi piacerebbe ottenere è "-04:00". Quando faccio lo object.utc_offset, ottengo -14400. Quale funzione dovrei usare?

risposta

16

Stai cercando strftime:

Time.now.strftime("%:z") 

Che vi darà l'esempio di offset come "-04: 00".

+1

Ho trovato che dovevo usare il flag ':' per usare i due punti per% z '. (Ruby 1.9.3) I.e. Time.zone.now.strftime ("%: z") => "+01: 00" – tsdbrown

+1

Side-note, l'offset UTC è diverso dal fuso orario. Più fuso orario condivide lo stesso offset UTC. E l'offset di una singola fascia oraria cambierà in base all'ora legale. –

3

È in secondi. Dividere per 3600 per ore o 60 per minuti.

Ma se si desidera la stringa di offset formattata, utilizzare la risposta di vgoff.

-1

vgoff e Matt Johnson mi ha battuto sul tempo, ma per ulteriori elaborazioni vedere pagina 717-720 e tabella 27.18 nella programmazione Ruby 3rd Edition (Il libro Piccone), per ulteriori elaborazioni. % z fornisce offset di ora, % Z indica il nome del fuso orario, ad es. MDT, PST, ecc.