C'è già una domanda che risponde a come convertire "America/Los_Angeles" in "Pacific Time (US & Canada)". Tuttavia, voglio convertire "US/Pacific" e altri fusi orari obsoleti in Rails TimeZone. Non riesco a trovare nulla nella libreria che mi aiuti a realizzare questo.Come si ottengono i nomi dei timezone Rails dagli identificatori TZInfo obsoleti?
risposta
dalle rotaie ActiveSupport::TimeZone docs:
La versione di tzinfo bundle con Supporto Active include solo le definizioni necessarie per sostenere le zone definite dal fuso orario classe. Se hai bisogno di usare zone che non sono definite da TimeZone, dovrai installare la gemma TZInfo (se una versione recente della gem è installata localmente, questa sarà usata al posto della versione in bundle.)
Personalmente, penso che i fusi orari di Rails siano sciocchi. Sono arbitrariamente limitati a ciò che Rails descrive come "un sottoinsieme significativo di 146 zone". Ma non fanno nulla per spiegare come determinano quali zone sono "significative" e quali sono scartate.
Gli identificatori come "Stati Uniti/Pacifico" sono noti come "collegamenti" o "alias" nei dati TZDB. Ho potuto vedere che forse potrebbero essere omessi da Rails, ma ci sono molti altri fusi orari del mondo reale che mancano del tutto.
L'unico luogo in cui sono stati visualizzati gli identificativi dei fusi orari di Rails nel mondo reale è l'API di Twitter. D'altra parte, gli identificatori IANA/TZDB sono onnipresenti.
Il miglior consiglio che posso offrire è quello di dimenticare Rails fusi orari, e basta usare Ruby TZInfo Gem direttamente. Ha l'implementazione completa di TZDB con tutte le zone, inclusi gli alias.
Se davvero si deve continuare a utilizzare le zone Rails, è possibile utilizzare prima TZInfo per risolvere l'alias nella zona effettiva, quindi verificare se quella zona si trova nel dizionario Rails MAPPING
. Per esempio:
"US/Pacific" => "America/Los_Angeles" (via TZInfo)
"America/Los_Angeles" => "Pacific Time (US & Canada)" (via Rails MAPPING)
Credo che quando si carica "US/Pacific" via tzinfo, sarà sottoclassi come un oggetto LinkedTimezoneInfo
, così si potrebbe utilizzare l'attributo link_to_identifier
da lì.
In questo comando verranno visualizzati i 144 nomi del fuso orario.
ActiveSupport :: TimeZone.zones_map
Non ha "" US/Pacific "" – user842563
- 1. Come si ottengono i nomi delle voci enum di TypeScript?
- 2. I caratteri in PHP sono influenzati dagli spazi dei nomi?
- 3. Come si ottengono i nomi del controller e dell'azione dall'URI del referrer?
- 4. Come si ottengono i nomi delle funzioni effettive da queste uscite
- 5. Come si gestiscono i punti nei nomi dei tasti MongoDB?
- 6. Come si ottengono i figli di un widget in Qt?
- 7. Identificatori dei nodi in neo4j
- 8. Come specificare i nomi dei processi AddIn?
- 9. TimeZone predefinito con ActiveSupport (senza Rails)
- 10. Come si ottengono i componenti di progettazione dei materiali pre API 21?
- 11. Come si ottengono i dati di posta elettronica dei contatti di un utente da Windows Live?
- 12. come risolvere Rails modello dello spazio dei nomi di collisione
- 13. Come si ottengono i pulsanti Get per mettere a fuoco?
- 14. Come si ottengono/definiscono i filtri nelle reti neurali convoluzionali?
- 15. Come si ottengono i primi 3 elementi in Python OrderedDict?
- 16. Come si ottengono i conteggi delle righe dell'oggetto Zend_Paginator?
- 17. Come si ottengono i pulsanti per riempire una griglia javafx?
- 18. Come gestire i dati obsoleti in REST?
- 19. Come ottenere i nomi dei file?
- 20. Rails 3.2 - Come reindirizzare a uno spazio dei nomi?
- 21. ActiveSupport :: Elenco TimeZone di stringhe per offset
- 22. Come gestite i nomi dei TLD dei codici paese nei vostri pacchetti/spazi dei nomi?
- 23. SQL INSERT prestazioni omettendo i nomi dei campi?
- 24. I preprocessi sono obsoleti nelle lingue moderne?
- 25. Rails percorso: definire radice dello spazio dei nomi
- 26. Offset timezone Python errato?
- 27. Come si ottengono i file E i valori dei moduli da un sito Web ASP.NET MVC 4?
- 28. Come si ottengono i modelli dinamici IDEA scalaz che funzionano per i metodi simbolici?
- 29. ottenere i nomi dei fogli da openpyxl
- 30. Convenzioni per i nomi dei xib
'' '' TZInfo :: Timezone.get ('US/Pacific'). Link_to_identifier''''NoMethodError. – ajbraus
@ajbraus - 'America/Vancouver' è una zona distinta, non un collegamento. Quindi non avrà un attributo 'link_to_identifier'. Ma ahimè, non è una zona nella lista delle zone "significative" di Rails. Quindi non c'è molto che potresti fare qui, tranne usare la gemma TZInfo in esclusiva e * non * provare a mapparli alle zone di Rails. –
@ajbraus - hai visto che hai aggiornato il tuo commento per mostrare "US/Pacific": quello è davvero un link. –