ruby obtenir un Temps donné dans le fuseau horaire

dans ruby, Comment puis-je obtenir l'heure actuelle dans un fuseau horaire donné? Je connais le décalage de UTC, et je veux obtenir l'heure actuelle dans le fuseau horaire avec ce décalage.

26
demandé sur ashweta 2010-05-28 10:50:07

7 réponses

une solution plus simple, plus légère:

Time.now.getlocal('-08:00')

Bien documenté ici.

mise à Jour 2017.02.17: si vous avez un fuseau horaire et que vous voulez le transformer en offset que vous pouvez utiliser avec #getlocal incluant DST, voici une façon de le faire:

require 'tzinfo'

timezone_name = 'US/Pacific'

timezone = TZInfo::Timezone.get(timezone_name)
offset_in_hours = timezone.current_period.utc_total_offset_rational.numerator
offset = '%+.2d:00' % offset_in_hours

Time.now.getlocal(offset)

Si vous voulez faire cela pour des moments autres que