eorzea_time 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7e55023b74d424d80dec37911a76e73fea018de02d194ce4ac258e45784f800
4
- data.tar.gz: f8a2c7139efcc68dac4daa4d7ddcc7407ebf88ddfaeb7c4bdd8016b156850255
3
+ metadata.gz: 96d1dca517697b66d2c07e9208e2595c259a95ed397a3392ef9fccab0507ed33
4
+ data.tar.gz: 99addcc59d89545c3e78ac6028636a93ee0ff2e0d5f3f1fa72920aee03d4f8f3
5
5
  SHA512:
6
- metadata.gz: 6749938b016c7a449c3d721013a26b3adeeffb17c14468e36d63cdf179b86ba5b10ff7aa730c3de3e5648532d27967ea043aeac91db3c4f3617463a96e52b5cd
7
- data.tar.gz: f9d14ca4d2b38d2cd76b23450abb8d02aa6605442e7c68bf841d0f76beb6d8d21ef05e5510f1ee37d1ff822886b36f7a3f9fc964d7e92aca9fd9c054becf4f88
6
+ metadata.gz: 46d9296dbe212ddb602be8588e11804a409c4e17f169eaf510564efd03f59d098c99cbc2d149f6a5dd5ff5af29112136fe4002558ad54128443c841754fe61c5
7
+ data.tar.gz: 88ebc03cf78b9fceae46a4f235f6d83c6b1968c21ec7b212f7fc796d80b6159b9ed1c52fe869bfc45c5ee43b071197588889ab1187c994e2217b7a1b99b8c7ad
data/README.md CHANGED
@@ -26,6 +26,14 @@ p et.to_s
26
26
  p et.hour
27
27
  p et.min
28
28
  p et.sec
29
+
30
+ p et.next_occurrence()
31
+ p et.next_occurrence(time: Time.now)
32
+ p et.next_occurrence(time: Time.now, count: 2)
33
+
34
+ p et.last_occurrence()
35
+ p et.last_occurrence(time: Time.now)
36
+ p et.last_occurrence(time: Time.now, count: 2)
29
37
  ```
30
38
 
31
39
  ## Development
@@ -1,10 +1,15 @@
1
1
  class EorzeaTime
2
+ HOUR = 175 # ET 1h = LT 175s
3
+ DAY = HOUR * 24
4
+
5
+ RATIO = 1440/70r # ET 1440m (24h) in LT is 70m
6
+
2
7
  def self.now
3
8
  from_time Time.now
4
9
  end
5
10
 
6
11
  def self.from_time(t)
7
- new(t.to_f * 1440 / 70) # ET 1440m (24h) in LT is 70m
12
+ new(t.to_f * RATIO) # ET 1440m (24h) in LT is 70m
8
13
  end
9
14
 
10
15
  def initialize(i)
@@ -40,7 +45,6 @@ class EorzeaTime
40
45
  @time.usec
41
46
  end
42
47
 
43
-
44
48
  def inspect
45
49
  "#<EorzeaTime #{to_s}>"
46
50
  end
@@ -57,6 +61,30 @@ class EorzeaTime
57
61
  sec: sec,
58
62
  }
59
63
  end
64
+
65
+ def occurrence(time = Time.now)
66
+ last_midnight = time.to_i / DAY * DAY
67
+ seconds_passed_in_local = (@epoch / RATIO).to_i
68
+ Time.at(last_midnight + seconds_passed_in_local).utc
69
+ end
70
+
71
+ def last_occurrence(time: Time.now, count: 1)
72
+ o = occurrence(time)
73
+ if o < time
74
+ o - ((count - 1) * DAY)
75
+ else
76
+ o - (count * DAY)
77
+ end
78
+ end
79
+
80
+ def next_occurrence(time: Time.now, count: 1)
81
+ o = occurrence(time)
82
+ if o > time
83
+ o + ((count - 1) * DAY)
84
+ else
85
+ o + (count * DAY)
86
+ end
87
+ end
60
88
  end
61
89
 
62
90
  require "eorzea_time/version"
@@ -1,3 +1,3 @@
1
1
  class EorzeaTime
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eorzea_time
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sorah Fukumori