eorzea_time 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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