1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
# et-orbi
[![Build Status](https://secure.travis-ci.org/floraison/et-orbi.svg)](http://travis-ci.org/floraison/et-orbi)
[![Build status](https://ci.appveyor.com/api/projects/status/6tbo9lk9qdor8ipl?svg=true)](https://ci.appveyor.com/project/jmettraux/et-orbi)
[![Gem Version](https://badge.fury.io/rb/et-orbi.svg)](http://badge.fury.io/rb/et-orbi)
[![Join the chat at https://gitter.im/floraison/fugit](https://badges.gitter.im/floraison/fugit.svg)](https://gitter.im/floraison/fugit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Time zones for [fugit](https://github.com/floraison/fugit) and for [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler). Urbi et Orbi.
`EtOrbi::EoTime` instances quack like Ruby `Time` instances, but their `#zone` returns a `TZInfo::TimeZone` instance.
Getting `EoTime` instances:
```ruby
require 'et-orbi'
EtOrbi.now
# => #<EtOrbi::EoTime:0x007f94d94 ...>
EtOrbi.parse('2017-12-13 13:00:00 America/Jamaica')
# => #<EtOrbi::EoTime:0x007f94d90 @zone=#<TZInfo::DataTimezone: America/Jamaica>...>
EtOrbi.make_time(Time.now)
# => #<EtOrbi::EoTime:0x007f94d91 ...>
EtOrbi.make_time(2017, 1, 31, 12, 'Europe/Moscow').to_debug_s
# => 'ot 2017-01-31 12:00:00 +03:00 dst:false'
EtOrbi::EoTime.new(0, 'UTC').to_s
# => "1970-01-01 00:00:00 +0000"
EtOrbi::EoTime.new(0, 'Europe/Moscow').to_s
# => "1970-01-01 03:00:00 +0300"
EtOrbi::EoTime.new(0, 'Europe/Moscow').to_zs
# => "1970-01-01 03:00:00 Europe/Moscow" # "be precise in your speech"
EtOrbi.parse('1970-01-01 03:00:00 Europe/Moscow')
# => #<EtOrbi::EoTime:0x00007fa4bc83fcd0
# @seconds=0.0, @zone=#<TZInfo::DataTimezone: Europe/Moscow>, @time=nil>
```
More about `EtOrbi::EoTime` instances:
```
eot = EtOrbi::EoTime.new(0, 'Europe/Moscow')
eot.to_local_time.class # => Time
eot.to_local_time.to_s # => "1970-01-01 09:00:00 +0900" (at least on my system)
# For the rest, EtOrbi::EoTime mimicks ::Time
```
Helper methods:
```ruby
require 'et-orbi'
EtOrbi.get_tzone('Europe/Vilnius')
# => #<TZInfo::DataTimezone: Europe/Vilnius>
EtOrbi.local_tzone
# => #<TZInfo::TimezoneProxy: Asia/Tokyo>
EtOrbi.platform_info
# => "(etz:nil,tnz:\"JST\",tzid:nil,rv:\"2.2.6\",rp:\"x86_64-darwin14\",eov:\"1.0.1\",
# rorv:nil,astz:nil,debian:nil,centos:nil,osx:\"Asia/Tokyo\")"
#
# etz: ENV['TZ']
# tnz: Time.now.zone
# tzid: defined?(TZInfo::Data)
# rv: RUBY_VERSION
# rp: RUBY_PLATFORM
# eov: EtOrbi::VERSION
# rorv: Rails::VERSION::STRING
# astz: ActiveSupport provided Time.zone
```
### Rails?
If Rails is present, `Time.zone` is provided and EtOrbi will use it, unless `ENV['TZ']` is set to a valid timezone name. Setting `ENV['TZ']` to nil can give back precedence to `Time.zone`.
Rails sets its timezone under `config/application.rb`.
## Related projects
### Sister projects
* [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler) - a cron/at/in/every/interval in-process scheduler, in fact, it's the father project to this fugit project
* [fugit](https://github.com/floraison/fugit) - Time tools for flor and the floraison project. Cron parsing and occurrence computing. Timestamps and more.
## LICENSE
MIT, see [LICENSE.txt](LICENSE.txt)
|