summaryrefslogtreecommitdiff
path: root/timev.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-12-30 01:55:51 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-12-31 17:25:07 +0900
commit77e7082e824af8523c1e7c3bfc111c2e52e7e3b3 (patch)
tree44a321e5127410b570a7938b759e5634d2e09569 /timev.rb
parent9101597d05ef645949bab3a210d8fa5e61de26e3 (diff)
Moved Time.at to builtin
Diffstat (limited to 'timev.rb')
-rw-r--r--timev.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/timev.rb b/timev.rb
index 8f20d6673f..2083e3106d 100644
--- a/timev.rb
+++ b/timev.rb
@@ -9,3 +9,54 @@
def Time.now(in: nil)
__builtin.time_s_now(__builtin.arg!(:in))
end
+
+#
+# call-seq:
+# Time.at(time) -> time
+# Time.at(seconds_with_frac) -> time
+# Time.at(seconds, microseconds_with_frac) -> time
+# Time.at(seconds, milliseconds, :millisecond) -> time
+# Time.at(seconds, microseconds, :usec) -> time
+# Time.at(seconds, microseconds, :microsecond) -> time
+# Time.at(seconds, nanoseconds, :nsec) -> time
+# Time.at(seconds, nanoseconds, :nanosecond) -> time
+# Time.at(time, in: tz) -> time
+# Time.at(seconds_with_frac, in: tz) -> time
+# Time.at(seconds, microseconds_with_frac, in: tz) -> time
+# Time.at(seconds, milliseconds, :millisecond, in: tz) -> time
+# Time.at(seconds, microseconds, :usec, in: tz) -> time
+# Time.at(seconds, microseconds, :microsecond, in: tz) -> time
+# Time.at(seconds, nanoseconds, :nsec, in: tz) -> time
+# Time.at(seconds, nanoseconds, :nanosecond, in: tz) -> time
+#
+# Creates a new Time object with the value given by +time+,
+# the given number of +seconds_with_frac+, or
+# +seconds+ and +microseconds_with_frac+ since the Epoch.
+# +seconds_with_frac+ and +microseconds_with_frac+
+# can be an Integer, Float, Rational, or other Numeric.
+#
+# If +in+ argument is given, the result is in that timezone or UTC offset, or
+# if a numeric argument is given, the result is in local time.
+# The +in+ argument accepts the same types of arguments as +tz+ argument of
+# Time.new: string, number of seconds, or a timezone object.
+#
+#
+# Time.at(0) #=> 1969-12-31 18:00:00 -0600
+# Time.at(Time.at(0)) #=> 1969-12-31 18:00:00 -0600
+# Time.at(946702800) #=> 1999-12-31 23:00:00 -0600
+# Time.at(-284061600) #=> 1960-12-31 00:00:00 -0600
+# Time.at(946684800.2).usec #=> 200000
+# Time.at(946684800, 123456.789).nsec #=> 123456789
+# Time.at(946684800, 123456789, :nsec).nsec #=> 123456789
+#
+# Time.at(1582721899, in: "+09:00") #=> 2020-02-26 21:58:19 +0900
+# Time.at(1582721899, in: "UTC") #=> 2020-02-26 12:58:19 UTC
+# Time.at(1582721899, in: "C") #=> 2020-02-26 13:58:19 +0300
+# Time.at(1582721899, in: 32400) #=> 2020-02-26 21:58:19 +0900
+#
+# require 'tzinfo'
+# Time.at(1582721899, in: TZInfo::Timezone.get('Europe/Kiev'))
+# #=> 2020-02-26 14:58:19 +0200
+def Time.at(time, subsec = (nosubsec = true), unit = (nounit = true), in: nil)
+ __builtin.time_s_at(time, subsec, unit, __builtin.arg!(:in), nosubsec, nounit)
+end