rbs 3.0.0.dev.2 → 3.0.0.dev.3
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 +4 -4
- data/.github/workflows/comments.yml +2 -1
- data/.github/workflows/ruby.yml +4 -0
- data/Gemfile.lock +11 -11
- data/Rakefile +2 -2
- data/Steepfile +1 -1
- data/core/array.rbs +573 -423
- data/core/basic_object.rbs +11 -39
- data/core/binding.rbs +1 -1
- data/core/builtin.rbs +8 -0
- data/core/class.rbs +37 -0
- data/core/comparable.rbs +7 -18
- data/core/complex.rbs +2 -2
- data/core/data.rbs +419 -0
- data/core/dir.rbs +52 -104
- data/core/encoding.rbs +22 -181
- data/core/enumerable.rbs +212 -175
- data/core/enumerator/product.rbs +96 -0
- data/core/enumerator.rbs +57 -8
- data/core/errors.rbs +8 -2
- data/core/exception.rbs +41 -0
- data/core/fiber.rbs +95 -12
- data/core/file.rbs +840 -275
- data/core/file_test.rbs +34 -19
- data/core/float.rbs +40 -96
- data/core/gc.rbs +15 -3
- data/core/hash.rbs +113 -175
- data/core/integer.rbs +85 -145
- data/core/io/buffer.rbs +187 -60
- data/core/io/wait.rbs +28 -16
- data/core/io.rbs +1859 -1389
- data/core/kernel.rbs +525 -961
- data/core/match_data.rbs +306 -142
- data/core/math.rbs +506 -234
- data/core/method.rbs +0 -24
- data/core/module.rbs +110 -17
- data/core/nil_class.rbs +2 -0
- data/core/numeric.rbs +76 -144
- data/core/object.rbs +88 -212
- data/core/proc.rbs +17 -5
- data/core/process.rbs +22 -5
- data/core/ractor.rbs +1 -1
- data/core/random.rbs +20 -3
- data/core/range.rbs +91 -89
- data/core/rational.rbs +2 -3
- data/core/rbs/unnamed/argf.rbs +177 -120
- data/core/rbs/unnamed/env_class.rbs +89 -163
- data/core/rbs/unnamed/random.rbs +36 -12
- data/core/refinement.rbs +8 -0
- data/core/regexp.rbs +462 -272
- data/core/ruby_vm.rbs +210 -0
- data/{stdlib/set/0 → core}/set.rbs +43 -47
- data/core/string.rbs +1403 -1332
- data/core/string_io.rbs +191 -107
- data/core/struct.rbs +67 -63
- data/core/symbol.rbs +187 -201
- data/core/thread.rbs +40 -35
- data/core/time.rbs +902 -826
- data/core/trace_point.rbs +55 -6
- data/core/unbound_method.rbs +48 -24
- data/docs/collection.md +4 -0
- data/docs/syntax.md +55 -0
- data/ext/rbs_extension/parser.c +5 -6
- data/lib/rbs/cli.rb +6 -1
- data/lib/rbs/collection/cleaner.rb +8 -1
- data/lib/rbs/collection/config/lockfile.rb +3 -1
- data/lib/rbs/collection/config/lockfile_generator.rb +16 -14
- data/lib/rbs/collection/config.rb +1 -1
- data/lib/rbs/collection/sources/git.rb +9 -2
- data/lib/rbs/collection/sources/local.rb +79 -0
- data/lib/rbs/collection/sources.rb +8 -1
- data/lib/rbs/environment.rb +6 -5
- data/lib/rbs/environment_loader.rb +3 -2
- data/lib/rbs/errors.rb +18 -0
- data/lib/rbs/locator.rb +26 -7
- data/lib/rbs/sorter.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/sig/collection/sources.rbs +32 -3
- data/sig/environment.rbs +2 -3
- data/sig/locator.rbs +14 -2
- data/sig/shims/{abstract_syntax_tree.rbs → _abstract_syntax_tree.rbs} +0 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +16 -13
- data/stdlib/cgi/0/core.rbs +16 -0
- data/stdlib/coverage/0/coverage.rbs +50 -8
- data/stdlib/csv/0/csv.rbs +1 -1
- data/stdlib/date/0/date.rbs +856 -726
- data/stdlib/date/0/date_time.rbs +83 -210
- data/stdlib/erb/0/erb.rbs +13 -36
- data/stdlib/etc/0/etc.rbs +127 -20
- data/stdlib/fileutils/0/fileutils.rbs +1290 -381
- data/stdlib/logger/0/logger.rbs +466 -316
- data/stdlib/net-http/0/net-http.rbs +2211 -534
- data/stdlib/nkf/0/nkf.rbs +5 -5
- data/stdlib/objspace/0/objspace.rbs +31 -14
- data/stdlib/openssl/0/openssl.rbs +11 -7
- data/stdlib/optparse/0/optparse.rbs +20 -17
- data/stdlib/pathname/0/pathname.rbs +21 -4
- data/stdlib/pstore/0/pstore.rbs +378 -154
- data/stdlib/pty/0/pty.rbs +24 -8
- data/stdlib/ripper/0/ripper.rbs +1650 -0
- data/stdlib/socket/0/addrinfo.rbs +9 -15
- data/stdlib/socket/0/socket.rbs +36 -3
- data/stdlib/strscan/0/string_scanner.rbs +7 -5
- data/stdlib/tempfile/0/tempfile.rbs +104 -44
- data/stdlib/time/0/time.rbs +2 -2
- data/stdlib/uri/0/file.rbs +5 -0
- data/stdlib/uri/0/generic.rbs +2 -2
- data/stdlib/yaml/0/yaml.rbs +2 -2
- data/stdlib/zlib/0/zlib.rbs +1 -1
- metadata +8 -6
- data/core/deprecated.rbs +0 -9
- data/sig/shims/ripper.rbs +0 -8
data/stdlib/date/0/date.rbs
CHANGED
|
@@ -1,144 +1,100 @@
|
|
|
1
1
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
2
|
-
#
|
|
2
|
+
# Class Date provides methods for storing and manipulating calendar dates.
|
|
3
3
|
#
|
|
4
|
-
#
|
|
4
|
+
# Consider using [class Time](rdoc-ref:Time) instead of class Date if:
|
|
5
5
|
#
|
|
6
|
-
#
|
|
6
|
+
# * You need both dates and times; Date handles only dates.
|
|
7
|
+
# * You need only Gregorian dates (and not Julian dates); see [Julian and
|
|
8
|
+
# Gregorian Calendars](rdoc-ref:calendars.rdoc).
|
|
7
9
|
#
|
|
8
|
-
# Some terms and definitions are based on ISO 8601 and JIS X 0301.
|
|
9
10
|
#
|
|
10
|
-
#
|
|
11
|
+
# A Date object, once created, is immutable, and cannot be modified.
|
|
11
12
|
#
|
|
12
|
-
#
|
|
13
|
-
# ordinal number within a calendar month within that year.
|
|
13
|
+
# ## Creating a Date
|
|
14
14
|
#
|
|
15
|
-
#
|
|
15
|
+
# You can create a date for the current date, using Date.today:
|
|
16
16
|
#
|
|
17
|
-
#
|
|
17
|
+
# Date.today # => #<Date: 1999-12-31>
|
|
18
18
|
#
|
|
19
|
-
#
|
|
20
|
-
# ordinal number within the year.
|
|
19
|
+
# You can create a specific date from various combinations of arguments:
|
|
21
20
|
#
|
|
22
|
-
#
|
|
21
|
+
# * Date.new takes integer year, month, and day-of-month:
|
|
23
22
|
#
|
|
24
|
-
#
|
|
23
|
+
# Date.new(1999, 12, 31) # => #<Date: 1999-12-31>
|
|
25
24
|
#
|
|
26
|
-
#
|
|
25
|
+
# * Date.ordinal takes integer year and day-of-year:
|
|
27
26
|
#
|
|
28
|
-
#
|
|
29
|
-
# Monday and identified by its ordinal number within the year; the first
|
|
30
|
-
# calendar week of the year is the one that includes the first Thursday of that
|
|
31
|
-
# year. In the Gregorian calendar, this is equivalent to the week which includes
|
|
32
|
-
# January 4.
|
|
27
|
+
# Date.ordinal(1999, 365) # => #<Date: 1999-12-31>
|
|
33
28
|
#
|
|
34
|
-
#
|
|
29
|
+
# * Date.jd takes integer Julian day:
|
|
35
30
|
#
|
|
36
|
-
#
|
|
31
|
+
# Date.jd(2451544) # => #<Date: 1999-12-31>
|
|
37
32
|
#
|
|
38
|
-
#
|
|
39
|
-
# January 1, 4713 BCE (in the Julian calendar).
|
|
33
|
+
# * Date.commercial takes integer commercial data (year, week, day-of-week):
|
|
40
34
|
#
|
|
41
|
-
#
|
|
42
|
-
# original Julian day number. And the chronological Julian day number is a
|
|
43
|
-
# variation of the Julian day number. Its days begin at midnight on local time.
|
|
35
|
+
# Date.commercial(1999, 52, 5) # => #<Date: 1999-12-31>
|
|
44
36
|
#
|
|
45
|
-
#
|
|
46
|
-
# refers to "chronological Julian day number", not the original.
|
|
37
|
+
# * Date.parse takes a string, which it parses heuristically:
|
|
47
38
|
#
|
|
48
|
-
#
|
|
39
|
+
# Date.parse('1999-12-31') # => #<Date: 1999-12-31>
|
|
40
|
+
# Date.parse('31-12-1999') # => #<Date: 1999-12-31>
|
|
41
|
+
# Date.parse('1999-365') # => #<Date: 1999-12-31>
|
|
42
|
+
# Date.parse('1999-W52-5') # => #<Date: 1999-12-31>
|
|
49
43
|
#
|
|
50
|
-
#
|
|
44
|
+
# * Date.strptime takes a date string and a format string, then parses the
|
|
45
|
+
# date string according to the format string:
|
|
51
46
|
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
47
|
+
# Date.strptime('1999-12-31', '%Y-%m-%d') # => #<Date: 1999-12-31>
|
|
48
|
+
# Date.strptime('31-12-1999', '%d-%m-%Y') # => #<Date: 1999-12-31>
|
|
49
|
+
# Date.strptime('1999-365', '%Y-%j') # => #<Date: 1999-12-31>
|
|
50
|
+
# Date.strptime('1999-W52-5', '%G-W%V-%u') # => #<Date: 1999-12-31>
|
|
51
|
+
# Date.strptime('1999 52 5', '%Y %U %w') # => #<Date: 1999-12-31>
|
|
52
|
+
# Date.strptime('1999 52 5', '%Y %W %u') # => #<Date: 1999-12-31>
|
|
53
|
+
# Date.strptime('fri31dec99', '%a%d%b%y') # => #<Date: 1999-12-31>
|
|
54
54
|
#
|
|
55
|
-
# In this document, the astronomical modified Julian day number is the same as
|
|
56
|
-
# the original modified Julian day number. And the chronological modified Julian
|
|
57
|
-
# day number is a variation of the modified Julian day number. Its days begin at
|
|
58
|
-
# midnight on local time.
|
|
59
55
|
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
56
|
+
# See also the specialized methods in ["Specialized Format Strings" in Formats
|
|
57
|
+
# for Dates and
|
|
58
|
+
# Times](rdoc-ref:strftime_formatting.rdoc@Specialized+Format+Strings)
|
|
63
59
|
#
|
|
64
|
-
#
|
|
60
|
+
# ## Argument `limit`
|
|
65
61
|
#
|
|
66
|
-
#
|
|
62
|
+
# Certain singleton methods in Date that parse string arguments also take
|
|
63
|
+
# optional keyword argument `limit`, which can limit the length of the string
|
|
64
|
+
# argument.
|
|
67
65
|
#
|
|
68
|
-
#
|
|
69
|
-
# date.
|
|
66
|
+
# When `limit` is:
|
|
70
67
|
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
# Date.new(2001,2,3)
|
|
77
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
78
|
-
# Date.jd(2451944)
|
|
79
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
80
|
-
# Date.ordinal(2001,34)
|
|
81
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
82
|
-
# Date.commercial(2001,5,6)
|
|
83
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
84
|
-
# Date.parse('2001-02-03')
|
|
85
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
86
|
-
# Date.strptime('03-02-2001', '%d-%m-%Y')
|
|
87
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
88
|
-
# Time.new(2001,2,3).to_date
|
|
89
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
90
|
-
#
|
|
91
|
-
# All date objects are immutable; hence cannot modify themselves.
|
|
92
|
-
#
|
|
93
|
-
# The concept of a date object can be represented as a tuple of the day count,
|
|
94
|
-
# the offset and the day of calendar reform.
|
|
95
|
-
#
|
|
96
|
-
# The day count denotes the absolute position of a temporal dimension. The
|
|
97
|
-
# offset is relative adjustment, which determines decoded local time with the
|
|
98
|
-
# day count. The day of calendar reform denotes the start day of the new style.
|
|
99
|
-
# The old style of the West is the Julian calendar which was adopted by Caesar.
|
|
100
|
-
# The new style is the Gregorian calendar, which is the current civil calendar
|
|
101
|
-
# of many countries.
|
|
102
|
-
#
|
|
103
|
-
# The day count is virtually the astronomical Julian day number. The offset in
|
|
104
|
-
# this class is usually zero, and cannot be specified directly.
|
|
105
|
-
#
|
|
106
|
-
# A Date object can be created with an optional argument, the day of calendar
|
|
107
|
-
# reform as a Julian day number, which should be 2298874 to 2426355 or
|
|
108
|
-
# negative/positive infinity. The default value is `Date::ITALY`
|
|
109
|
-
# (2299161=1582-10-15). See also sample/cal.rb.
|
|
110
|
-
#
|
|
111
|
-
# $ ruby sample/cal.rb -c it 10 1582
|
|
112
|
-
# October 1582
|
|
113
|
-
# S M Tu W Th F S
|
|
114
|
-
# 1 2 3 4 15 16
|
|
115
|
-
# 17 18 19 20 21 22 23
|
|
116
|
-
# 24 25 26 27 28 29 30
|
|
117
|
-
# 31
|
|
118
|
-
#
|
|
119
|
-
# $ ruby sample/cal.rb -c gb 9 1752
|
|
120
|
-
# September 1752
|
|
121
|
-
# S M Tu W Th F S
|
|
122
|
-
# 1 2 14 15 16
|
|
123
|
-
# 17 18 19 20 21 22 23
|
|
124
|
-
# 24 25 26 27 28 29 30
|
|
125
|
-
#
|
|
126
|
-
# A Date object has various methods. See each reference.
|
|
127
|
-
#
|
|
128
|
-
# d = Date.parse('3rd Feb 2001')
|
|
129
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
130
|
-
# d.year #=> 2001
|
|
131
|
-
# d.mon #=> 2
|
|
132
|
-
# d.mday #=> 3
|
|
133
|
-
# d.wday #=> 6
|
|
134
|
-
# d += 1 #=> #<Date: 2001-02-04 ...>
|
|
135
|
-
# d.strftime('%a %d %b %Y') #=> "Sun 04 Feb 2001"
|
|
68
|
+
# * Non-negative: raises ArgumentError if the string length is greater than
|
|
69
|
+
# *limit*.
|
|
70
|
+
# * Other numeric or `nil`: ignores `limit`.
|
|
71
|
+
# * Other non-numeric: raises TypeError.
|
|
136
72
|
#
|
|
137
73
|
class Date
|
|
138
74
|
# <!--
|
|
139
75
|
# rdoc-file=ext/date/date_core.c
|
|
140
|
-
# - new(
|
|
76
|
+
# - Date.new(year = -4712, month = 1, mday = 1, start = Date::ITALY) -> date
|
|
141
77
|
# -->
|
|
78
|
+
# Returns a new Date object constructed from the given arguments:
|
|
79
|
+
#
|
|
80
|
+
# Date.new(2022).to_s # => "2022-01-01"
|
|
81
|
+
# Date.new(2022, 2).to_s # => "2022-02-01"
|
|
82
|
+
# Date.new(2022, 2, 4).to_s # => "2022-02-04"
|
|
83
|
+
#
|
|
84
|
+
# Argument `month` should be in range (1..12) or range (-12..-1); when the
|
|
85
|
+
# argument is negative, counts backward from the end of the year:
|
|
86
|
+
#
|
|
87
|
+
# Date.new(2022, -11, 4).to_s # => "2022-02-04"
|
|
88
|
+
#
|
|
89
|
+
# Argument `mday` should be in range (1..n) or range (-n..-1) where `n` is the
|
|
90
|
+
# number of days in the month; when the argument is negative, counts backward
|
|
91
|
+
# from the end of the month.
|
|
92
|
+
#
|
|
93
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
94
|
+
#
|
|
95
|
+
# Date.civil is an alias for Date.new.
|
|
96
|
+
#
|
|
97
|
+
# Related: Date.jd.
|
|
142
98
|
#
|
|
143
99
|
def initialize: (?Integer year, ?Integer month, ?Integer mday, ?Integer start) -> void
|
|
144
100
|
|
|
@@ -146,480 +102,652 @@ class Date
|
|
|
146
102
|
|
|
147
103
|
# <!--
|
|
148
104
|
# rdoc-file=ext/date/date_core.c
|
|
149
|
-
# - Date._httpdate(string, limit: 128)
|
|
105
|
+
# - Date._httpdate(string, limit: 128) -> hash
|
|
150
106
|
# -->
|
|
151
|
-
# Returns a hash of parsed
|
|
107
|
+
# Returns a hash of values parsed from `string`, which should be a valid [HTTP
|
|
108
|
+
# date format](rdoc-ref:strftime_formatting.rdoc@HTTP+Format):
|
|
152
109
|
#
|
|
153
|
-
#
|
|
154
|
-
#
|
|
155
|
-
#
|
|
110
|
+
# d = Date.new(2001, 2, 3)
|
|
111
|
+
# s = d.httpdate # => "Sat, 03 Feb 2001 00:00:00 GMT"
|
|
112
|
+
# Date._httpdate(s)
|
|
113
|
+
# # => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"GMT", :offset=>0}
|
|
114
|
+
#
|
|
115
|
+
# Related: Date.httpdate (returns a Date object).
|
|
156
116
|
#
|
|
157
117
|
def self._httpdate: (String str) -> Hash[Symbol, Integer]
|
|
158
118
|
|
|
159
119
|
# <!--
|
|
160
120
|
# rdoc-file=ext/date/date_core.c
|
|
161
|
-
# - Date._iso8601(string, limit: 128)
|
|
121
|
+
# - Date._iso8601(string, limit: 128) -> hash
|
|
162
122
|
# -->
|
|
163
|
-
# Returns a hash of parsed
|
|
123
|
+
# Returns a hash of values parsed from `string`, which should contain an [ISO
|
|
124
|
+
# 8601 formatted
|
|
125
|
+
# date](rdoc-ref:strftime_formatting.rdoc@ISO+8601+Format+Specifications):
|
|
126
|
+
#
|
|
127
|
+
# d = Date.new(2001, 2, 3)
|
|
128
|
+
# s = d.iso8601 # => "2001-02-03"
|
|
129
|
+
# Date._iso8601(s) # => {:mday=>3, :year=>2001, :mon=>2}
|
|
130
|
+
#
|
|
131
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
164
132
|
#
|
|
165
|
-
#
|
|
166
|
-
# stop this check by passing `limit: nil`, but note that it may take a long time
|
|
167
|
-
# to parse.
|
|
133
|
+
# Related: Date.iso8601 (returns a Date object).
|
|
168
134
|
#
|
|
169
135
|
def self._iso8601: (String str) -> Hash[Symbol, Integer]
|
|
170
136
|
|
|
171
137
|
# <!--
|
|
172
138
|
# rdoc-file=ext/date/date_core.c
|
|
173
|
-
# - Date._jisx0301(string, limit: 128)
|
|
139
|
+
# - Date._jisx0301(string, limit: 128) -> hash
|
|
174
140
|
# -->
|
|
175
|
-
# Returns a hash of parsed
|
|
141
|
+
# Returns a hash of values parsed from `string`, which should be a valid [JIS X
|
|
142
|
+
# 0301 date format](rdoc-ref:strftime_formatting.rdoc@JIS+X+0301+Format):
|
|
176
143
|
#
|
|
177
|
-
#
|
|
178
|
-
#
|
|
179
|
-
#
|
|
144
|
+
# d = Date.new(2001, 2, 3)
|
|
145
|
+
# s = d.jisx0301 # => "H13.02.03"
|
|
146
|
+
# Date._jisx0301(s) # => {:year=>2001, :mon=>2, :mday=>3}
|
|
147
|
+
#
|
|
148
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
149
|
+
#
|
|
150
|
+
# Related: Date.jisx0301 (returns a Date object).
|
|
180
151
|
#
|
|
181
152
|
def self._jisx0301: (String str) -> Hash[Symbol, Integer]
|
|
182
153
|
|
|
183
154
|
# <!--
|
|
184
155
|
# rdoc-file=ext/date/date_core.c
|
|
185
|
-
# - Date._parse(string
|
|
156
|
+
# - Date._parse(string, comp = true, limit: 128) -> hash
|
|
186
157
|
# -->
|
|
187
|
-
#
|
|
188
|
-
#
|
|
158
|
+
# **Note**: This method recognizes many forms in `string`, but it is not a
|
|
159
|
+
# validator. For formats, see ["Specialized Format Strings" in Formats for Dates
|
|
160
|
+
# and Times](rdoc-ref:strftime_formatting.rdoc@Specialized+Format+Strings)
|
|
161
|
+
#
|
|
162
|
+
# If `string` does not specify a valid date, the result is unpredictable;
|
|
163
|
+
# consider using Date._strptime instead.
|
|
189
164
|
#
|
|
190
|
-
#
|
|
191
|
-
# match valid formats strictly, you may get a cryptic result. Should consider
|
|
192
|
-
# to use `Date._strptime` or `DateTime._strptime` instead of this method as
|
|
193
|
-
# possible.
|
|
165
|
+
# Returns a hash of values parsed from `string`:
|
|
194
166
|
#
|
|
195
|
-
#
|
|
196
|
-
# "00" to "99", considers the year a 2-digit form and makes it full.
|
|
167
|
+
# Date._parse('2001-02-03') # => {:year=>2001, :mon=>2, :mday=>3}
|
|
197
168
|
#
|
|
198
|
-
#
|
|
169
|
+
# If `comp` is `true` and the given year is in the range `(0..99)`, the current
|
|
170
|
+
# century is supplied; otherwise, the year is taken as given:
|
|
199
171
|
#
|
|
200
|
-
#
|
|
201
|
-
#
|
|
202
|
-
#
|
|
172
|
+
# Date._parse('01-02-03', true) # => {:year=>2001, :mon=>2, :mday=>3}
|
|
173
|
+
# Date._parse('01-02-03', false) # => {:year=>1, :mon=>2, :mday=>3}
|
|
174
|
+
#
|
|
175
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
176
|
+
#
|
|
177
|
+
# Related: Date.parse(returns a Date object).
|
|
203
178
|
#
|
|
204
179
|
def self._parse: (String str, ?boolish complete) -> Hash[Symbol, Integer]
|
|
205
180
|
|
|
206
181
|
# <!--
|
|
207
182
|
# rdoc-file=ext/date/date_core.c
|
|
208
|
-
# - Date._rfc2822(string, limit: 128)
|
|
209
|
-
# - Date._rfc822(string, limit: 128) -> hash
|
|
183
|
+
# - Date._rfc2822(string, limit: 128) -> hash
|
|
210
184
|
# -->
|
|
211
|
-
# Returns a hash of parsed
|
|
185
|
+
# Returns a hash of values parsed from `string`, which should be a valid [RFC
|
|
186
|
+
# 2822 date format](rdoc-ref:strftime_formatting.rdoc@RFC+2822+Format):
|
|
187
|
+
#
|
|
188
|
+
# d = Date.new(2001, 2, 3)
|
|
189
|
+
# s = d.rfc2822 # => "Sat, 3 Feb 2001 00:00:00 +0000"
|
|
190
|
+
# Date._rfc2822(s)
|
|
191
|
+
# # => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"+0000", :offset=>0}
|
|
212
192
|
#
|
|
213
|
-
#
|
|
214
|
-
#
|
|
215
|
-
#
|
|
193
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
194
|
+
#
|
|
195
|
+
# Date._rfc822 is an alias for Date._rfc2822.
|
|
196
|
+
#
|
|
197
|
+
# Related: Date.rfc2822 (returns a Date object).
|
|
216
198
|
#
|
|
217
199
|
def self._rfc2822: (String str) -> Hash[Symbol, Integer | String]
|
|
218
200
|
|
|
219
201
|
# <!--
|
|
220
202
|
# rdoc-file=ext/date/date_core.c
|
|
221
|
-
# - Date._rfc3339(string, limit: 128)
|
|
203
|
+
# - Date._rfc3339(string, limit: 128) -> hash
|
|
222
204
|
# -->
|
|
223
|
-
# Returns a hash of parsed
|
|
205
|
+
# Returns a hash of values parsed from `string`, which should be a valid [RFC
|
|
206
|
+
# 3339 format](rdoc-ref:strftime_formatting.rdoc@RFC+3339+Format):
|
|
207
|
+
#
|
|
208
|
+
# d = Date.new(2001, 2, 3)
|
|
209
|
+
# s = d.rfc3339 # => "2001-02-03T00:00:00+00:00"
|
|
210
|
+
# Date._rfc3339(s)
|
|
211
|
+
# # => {:year=>2001, :mon=>2, :mday=>3, :hour=>0, :min=>0, :sec=>0, :zone=>"+00:00", :offset=>0}
|
|
224
212
|
#
|
|
225
|
-
#
|
|
226
|
-
#
|
|
227
|
-
#
|
|
213
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
214
|
+
#
|
|
215
|
+
# Related: Date.rfc3339 (returns a Date object).
|
|
228
216
|
#
|
|
229
217
|
def self._rfc3339: (String str) -> Hash[Symbol, Integer | String]
|
|
230
218
|
|
|
231
219
|
# <!--
|
|
232
220
|
# rdoc-file=ext/date/date_core.c
|
|
233
|
-
# - Date._rfc2822(string, limit: 128)
|
|
234
|
-
# - Date._rfc822(string, limit: 128) -> hash
|
|
221
|
+
# - Date._rfc2822(string, limit: 128) -> hash
|
|
235
222
|
# -->
|
|
236
|
-
# Returns a hash of parsed
|
|
223
|
+
# Returns a hash of values parsed from `string`, which should be a valid [RFC
|
|
224
|
+
# 2822 date format](rdoc-ref:strftime_formatting.rdoc@RFC+2822+Format):
|
|
225
|
+
#
|
|
226
|
+
# d = Date.new(2001, 2, 3)
|
|
227
|
+
# s = d.rfc2822 # => "Sat, 3 Feb 2001 00:00:00 +0000"
|
|
228
|
+
# Date._rfc2822(s)
|
|
229
|
+
# # => {:wday=>6, :mday=>3, :mon=>2, :year=>2001, :hour=>0, :min=>0, :sec=>0, :zone=>"+0000", :offset=>0}
|
|
230
|
+
#
|
|
231
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
237
232
|
#
|
|
238
|
-
#
|
|
239
|
-
#
|
|
240
|
-
#
|
|
233
|
+
# Date._rfc822 is an alias for Date._rfc2822.
|
|
234
|
+
#
|
|
235
|
+
# Related: Date.rfc2822 (returns a Date object).
|
|
241
236
|
#
|
|
242
237
|
def self._rfc822: (String str) -> Hash[Symbol, Integer | String]
|
|
243
238
|
|
|
244
239
|
# <!--
|
|
245
240
|
# rdoc-file=ext/date/date_core.c
|
|
246
|
-
# - Date._strptime(string
|
|
241
|
+
# - Date._strptime(string, format = '%F') -> hash
|
|
247
242
|
# -->
|
|
248
|
-
#
|
|
249
|
-
#
|
|
250
|
-
#
|
|
243
|
+
# Returns a hash of values parsed from `string` according to the given `format`:
|
|
244
|
+
#
|
|
245
|
+
# Date._strptime('2001-02-03', '%Y-%m-%d') # => {:year=>2001, :mon=>2, :mday=>3}
|
|
246
|
+
#
|
|
247
|
+
# For other formats, see [Formats for Dates and
|
|
248
|
+
# Times](rdoc-ref:strftime_formatting.rdoc). (Unlike Date.strftime, does not
|
|
249
|
+
# support flags and width.)
|
|
251
250
|
#
|
|
252
|
-
#
|
|
253
|
-
# #=> {:year=>2001, :mon=>2, :mday=>3}
|
|
251
|
+
# See also [strptime(3)](https://man7.org/linux/man-pages/man3/strptime.3.html).
|
|
254
252
|
#
|
|
255
|
-
#
|
|
253
|
+
# Related: Date.strptime (returns a Date object).
|
|
256
254
|
#
|
|
257
255
|
def self._strptime: (String str, ?String format) -> Hash[Symbol, Integer]
|
|
258
256
|
|
|
259
257
|
# <!--
|
|
260
258
|
# rdoc-file=ext/date/date_core.c
|
|
261
|
-
# - Date._xmlschema(string, limit: 128)
|
|
259
|
+
# - Date._xmlschema(string, limit: 128) -> hash
|
|
262
260
|
# -->
|
|
263
|
-
# Returns a hash of parsed
|
|
261
|
+
# Returns a hash of values parsed from `string`, which should be a valid XML
|
|
262
|
+
# date format:
|
|
264
263
|
#
|
|
265
|
-
#
|
|
266
|
-
#
|
|
267
|
-
#
|
|
264
|
+
# d = Date.new(2001, 2, 3)
|
|
265
|
+
# s = d.xmlschema # => "2001-02-03"
|
|
266
|
+
# Date._xmlschema(s) # => {:year=>2001, :mon=>2, :mday=>3}
|
|
267
|
+
#
|
|
268
|
+
# See argument [limit](rdoc-ref:Date@Argument+limit).
|
|
269
|
+
#
|
|
270
|
+
# Related: Date.xmlschema (returns a Date object).
|
|
268
271
|
#
|
|
269
272
|
def self._xmlschema: (String str) -> Hash[Symbol, Integer]
|
|
270
273
|
|
|
271
274
|
# <!--
|
|
272
275
|
# rdoc-file=ext/date/date_core.c
|
|
273
|
-
# -
|
|
274
|
-
# - Date.new([year=-4712[, month=1[, mday=1[, start=Date::ITALY]]]]) -> date
|
|
276
|
+
# - civil(*args)
|
|
275
277
|
# -->
|
|
276
|
-
#
|
|
277
|
-
#
|
|
278
|
-
# In this class, BCE years are counted astronomically. Thus, the year before
|
|
279
|
-
# the year 1 is the year zero, and the year preceding the year zero is the year
|
|
280
|
-
# -1. The month and the day of month should be a negative or a positive number
|
|
281
|
-
# (as a relative month/day from the end of year/month when negative). They
|
|
282
|
-
# should not be zero.
|
|
283
|
-
#
|
|
284
|
-
# The last argument should be a Julian day number which denotes the day of
|
|
285
|
-
# calendar reform. Date::ITALY (2299161=1582-10-15), Date::ENGLAND
|
|
286
|
-
# (2361222=1752-09-14), Date::GREGORIAN (the proleptic Gregorian calendar) and
|
|
287
|
-
# Date::JULIAN (the proleptic Julian calendar) can be specified as a day of
|
|
288
|
-
# calendar reform.
|
|
289
|
-
#
|
|
290
|
-
# Date.new(2001) #=> #<Date: 2001-01-01 ...>
|
|
291
|
-
# Date.new(2001,2,3) #=> #<Date: 2001-02-03 ...>
|
|
292
|
-
# Date.new(2001,2,-1) #=> #<Date: 2001-02-28 ...>
|
|
293
|
-
#
|
|
294
|
-
# See also ::jd.
|
|
278
|
+
# Same as Date.new.
|
|
295
279
|
#
|
|
296
280
|
def self.civil: (?Integer year, ?Integer month, ?Integer mday, ?Integer start) -> Date
|
|
297
281
|
|
|
298
282
|
# <!--
|
|
299
283
|
# rdoc-file=ext/date/date_core.c
|
|
300
|
-
# - Date.commercial(
|
|
284
|
+
# - Date.commercial(cwyear = -4712, cweek = 1, cwday = 1, start = Date::ITALY) -> date
|
|
301
285
|
# -->
|
|
302
|
-
#
|
|
286
|
+
# Returns a new Date object constructed from the arguments.
|
|
287
|
+
#
|
|
288
|
+
# Argument `cwyear` gives the year, and should be an integer.
|
|
289
|
+
#
|
|
290
|
+
# Argument `cweek` gives the index of the week within the year, and should be in
|
|
291
|
+
# range (1..53) or (-53..-1); in some years, 53 or -53 will be out-of-range; if
|
|
292
|
+
# negative, counts backward from the end of the year:
|
|
293
|
+
#
|
|
294
|
+
# Date.commercial(2022, 1, 1).to_s # => "2022-01-03"
|
|
295
|
+
# Date.commercial(2022, 52, 1).to_s # => "2022-12-26"
|
|
296
|
+
#
|
|
297
|
+
# Argument `cwday` gives the indes of the weekday within the week, and should be
|
|
298
|
+
# in range (1..7) or (-7..-1); 1 or -7 is Monday; if negative, counts backward
|
|
299
|
+
# from the end of the week:
|
|
300
|
+
#
|
|
301
|
+
# Date.commercial(2022, 1, 1).to_s # => "2022-01-03"
|
|
302
|
+
# Date.commercial(2022, 1, -7).to_s # => "2022-01-03"
|
|
303
303
|
#
|
|
304
|
-
#
|
|
305
|
-
# relative week/day from the end of year/week when negative). They should not
|
|
306
|
-
# be zero.
|
|
304
|
+
# When `cweek` is 1:
|
|
307
305
|
#
|
|
308
|
-
#
|
|
309
|
-
#
|
|
310
|
-
# Date.commercial(2001,5,6) #=> #<Date: 2001-02-03 ...>
|
|
306
|
+
# * If January 1 is a Friday, Saturday, or Sunday, the first week begins in
|
|
307
|
+
# the week after:
|
|
311
308
|
#
|
|
312
|
-
#
|
|
309
|
+
# Date::ABBR_DAYNAMES[Date.new(2023, 1, 1).wday] # => "Sun"
|
|
310
|
+
# Date.commercial(2023, 1, 1).to_s # => "2023-01-02"
|
|
311
|
+
# Date.commercial(2023, 1, 7).to_s # => "2023-01-08"
|
|
312
|
+
#
|
|
313
|
+
# * Otherwise, the first week is the week of January 1, which may mean some of
|
|
314
|
+
# the days fall on the year before:
|
|
315
|
+
#
|
|
316
|
+
# Date::ABBR_DAYNAMES[Date.new(2020, 1, 1).wday] # => "Wed"
|
|
317
|
+
# Date.commercial(2020, 1, 1).to_s # => "2019-12-30"
|
|
318
|
+
# Date.commercial(2020, 1, 7).to_s # => "2020-01-05"
|
|
319
|
+
#
|
|
320
|
+
#
|
|
321
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
322
|
+
#
|
|
323
|
+
# Related: Date.jd, Date.new, Date.ordinal.
|
|
313
324
|
#
|
|
314
325
|
def self.commercial: (?Integer cwyear, ?Integer cweek, ?Integer cwday, ?Integer start) -> Date
|
|
315
326
|
|
|
316
327
|
# <!--
|
|
317
328
|
# rdoc-file=ext/date/date_core.c
|
|
318
|
-
# - Date.gregorian_leap?(year)
|
|
319
|
-
# - Date.leap?(year) -> bool
|
|
329
|
+
# - Date.gregorian_leap?(year) -> true or false
|
|
320
330
|
# -->
|
|
321
|
-
# Returns true if the given year is a leap year
|
|
322
|
-
# calendar.
|
|
331
|
+
# Returns `true` if the given year is a leap year in the [proleptic Gregorian
|
|
332
|
+
# calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar), `false`
|
|
333
|
+
# otherwise:
|
|
334
|
+
#
|
|
335
|
+
# Date.gregorian_leap?(2000) # => true
|
|
336
|
+
# Date.gregorian_leap?(2001) # => false
|
|
323
337
|
#
|
|
324
|
-
#
|
|
325
|
-
#
|
|
338
|
+
# Date.leap? is an alias for Date.gregorian_leap?.
|
|
339
|
+
#
|
|
340
|
+
# Related: Date.julian_leap?.
|
|
326
341
|
#
|
|
327
342
|
def self.gregorian_leap?: (Integer year) -> bool
|
|
328
343
|
|
|
329
344
|
# <!--
|
|
330
345
|
# rdoc-file=ext/date/date_core.c
|
|
331
|
-
# - Date.httpdate(string='Mon, 01 Jan -4712 00:00:00 GMT'
|
|
346
|
+
# - Date.httpdate(string = 'Mon, 01 Jan -4712 00:00:00 GMT', start = Date::ITALY, limit: 128) -> date
|
|
332
347
|
# -->
|
|
333
|
-
#
|
|
334
|
-
# format.
|
|
348
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
349
|
+
# valid [HTTP date format](rdoc-ref:strftime_formatting.rdoc@HTTP+Format):
|
|
350
|
+
#
|
|
351
|
+
# d = Date.new(2001, 2, 3)
|
|
352
|
+
# s = d.httpdate # => "Sat, 03 Feb 2001 00:00:00 GMT"
|
|
353
|
+
# Date.httpdate(s) # => #<Date: 2001-02-03>
|
|
354
|
+
#
|
|
355
|
+
# See:
|
|
335
356
|
#
|
|
336
|
-
#
|
|
337
|
-
#
|
|
357
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
358
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
338
359
|
#
|
|
339
|
-
#
|
|
340
|
-
#
|
|
341
|
-
# to parse.
|
|
360
|
+
#
|
|
361
|
+
# Related: Date._httpdate (returns a hash).
|
|
342
362
|
#
|
|
343
363
|
def self.httpdate: (String str, ?Integer start) -> Date
|
|
344
364
|
|
|
345
365
|
# <!--
|
|
346
366
|
# rdoc-file=ext/date/date_core.c
|
|
347
|
-
# - Date.iso8601(string='-4712-01-01'
|
|
367
|
+
# - Date.iso8601(string = '-4712-01-01', start = Date::ITALY, limit: 128) -> date
|
|
348
368
|
# -->
|
|
349
|
-
#
|
|
350
|
-
# ISO 8601
|
|
369
|
+
# Returns a new Date object with values parsed from `string`, which should
|
|
370
|
+
# contain an [ISO 8601 formatted
|
|
371
|
+
# date](rdoc-ref:strftime_formatting.rdoc@ISO+8601+Format+Specifications):
|
|
372
|
+
#
|
|
373
|
+
# d = Date.new(2001, 2, 3)
|
|
374
|
+
# s = d.iso8601 # => "2001-02-03"
|
|
375
|
+
# Date.iso8601(s) # => #<Date: 2001-02-03>
|
|
376
|
+
#
|
|
377
|
+
# See:
|
|
351
378
|
#
|
|
352
|
-
#
|
|
353
|
-
#
|
|
354
|
-
# Date.iso8601('2001-W05-6') #=> #<Date: 2001-02-03 ...>
|
|
379
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
380
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
355
381
|
#
|
|
356
|
-
#
|
|
357
|
-
#
|
|
358
|
-
# to parse.
|
|
382
|
+
#
|
|
383
|
+
# Related: Date._iso8601 (returns a hash).
|
|
359
384
|
#
|
|
360
385
|
def self.iso8601: (String str, ?Integer start) -> Date
|
|
361
386
|
|
|
362
387
|
# <!--
|
|
363
388
|
# rdoc-file=ext/date/date_core.c
|
|
364
|
-
# - Date.jd(
|
|
389
|
+
# - Date.jd(jd = 0, start = Date::ITALY) -> date
|
|
365
390
|
# -->
|
|
366
|
-
#
|
|
391
|
+
# Returns a new Date object formed from the arguments:
|
|
392
|
+
#
|
|
393
|
+
# Date.jd(2451944).to_s # => "2001-02-03"
|
|
394
|
+
# Date.jd(2451945).to_s # => "2001-02-04"
|
|
395
|
+
# Date.jd(0).to_s # => "-4712-01-01"
|
|
396
|
+
#
|
|
397
|
+
# The returned date is:
|
|
398
|
+
#
|
|
399
|
+
# * Gregorian, if the argument is greater than or equal to `start`:
|
|
400
|
+
#
|
|
401
|
+
# Date::ITALY # => 2299161
|
|
402
|
+
# Date.jd(Date::ITALY).gregorian? # => true
|
|
403
|
+
# Date.jd(Date::ITALY + 1).gregorian? # => true
|
|
404
|
+
#
|
|
405
|
+
# * Julian, otherwise
|
|
367
406
|
#
|
|
368
|
-
#
|
|
369
|
-
# Date.jd(2451945) #=> #<Date: 2001-02-04 ...>
|
|
370
|
-
# Date.jd(0) #=> #<Date: -4712-01-01 ...>
|
|
407
|
+
# Date.jd(Date::ITALY - 1).julian? # => true
|
|
371
408
|
#
|
|
372
|
-
#
|
|
409
|
+
#
|
|
410
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
411
|
+
#
|
|
412
|
+
# Related: Date.new.
|
|
373
413
|
#
|
|
374
414
|
def self.jd: (Integer jd, ?Integer start) -> Date
|
|
375
415
|
|
|
376
416
|
# <!--
|
|
377
417
|
# rdoc-file=ext/date/date_core.c
|
|
378
|
-
# - Date.jisx0301(string='-4712-01-01'
|
|
418
|
+
# - Date.jisx0301(string = '-4712-01-01', start = Date::ITALY, limit: 128) -> date
|
|
379
419
|
# -->
|
|
380
|
-
#
|
|
381
|
-
# JIS X 0301
|
|
420
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
421
|
+
# valid [JIS X 0301
|
|
422
|
+
# format](rdoc-ref:strftime_formatting.rdoc@JIS+X+0301+Format):
|
|
382
423
|
#
|
|
383
|
-
# Date.
|
|
424
|
+
# d = Date.new(2001, 2, 3)
|
|
425
|
+
# s = d.jisx0301 # => "H13.02.03"
|
|
426
|
+
# Date.jisx0301(s) # => #<Date: 2001-02-03>
|
|
384
427
|
#
|
|
385
428
|
# For no-era year, legacy format, Heisei is assumed.
|
|
386
429
|
#
|
|
387
|
-
# Date.jisx0301('13.02.03')
|
|
430
|
+
# Date.jisx0301('13.02.03') # => #<Date: 2001-02-03>
|
|
431
|
+
#
|
|
432
|
+
# See:
|
|
433
|
+
#
|
|
434
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
435
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
436
|
+
#
|
|
388
437
|
#
|
|
389
|
-
#
|
|
390
|
-
# stop this check by passing `limit: nil`, but note that it may take a long time
|
|
391
|
-
# to parse.
|
|
438
|
+
# Related: Date._jisx0301 (returns a hash).
|
|
392
439
|
#
|
|
393
440
|
def self.jisx0301: (String str, ?Integer start) -> Date
|
|
394
441
|
|
|
395
442
|
# <!--
|
|
396
443
|
# rdoc-file=ext/date/date_core.c
|
|
397
|
-
# - Date.julian_leap?(year)
|
|
444
|
+
# - Date.julian_leap?(year) -> true or false
|
|
398
445
|
# -->
|
|
399
|
-
# Returns true if the given year is a leap year
|
|
400
|
-
# calendar.
|
|
446
|
+
# Returns `true` if the given year is a leap year in the [proleptic Julian
|
|
447
|
+
# calendar](https://en.wikipedia.org/wiki/Proleptic_Julian_calendar), `false`
|
|
448
|
+
# otherwise:
|
|
401
449
|
#
|
|
402
|
-
# Date.julian_leap?(1900)
|
|
403
|
-
# Date.julian_leap?(1901)
|
|
450
|
+
# Date.julian_leap?(1900) # => true
|
|
451
|
+
# Date.julian_leap?(1901) # => false
|
|
452
|
+
#
|
|
453
|
+
# Related: Date.gregorian_leap?.
|
|
404
454
|
#
|
|
405
455
|
def self.julian_leap?: (Integer year) -> bool
|
|
406
456
|
|
|
407
457
|
# <!--
|
|
408
458
|
# rdoc-file=ext/date/date_core.c
|
|
409
|
-
# - Date.gregorian_leap?(year)
|
|
410
|
-
# - Date.leap?(year) -> bool
|
|
459
|
+
# - Date.gregorian_leap?(year) -> true or false
|
|
411
460
|
# -->
|
|
412
|
-
# Returns true if the given year is a leap year
|
|
413
|
-
# calendar.
|
|
461
|
+
# Returns `true` if the given year is a leap year in the [proleptic Gregorian
|
|
462
|
+
# calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar), `false`
|
|
463
|
+
# otherwise:
|
|
464
|
+
#
|
|
465
|
+
# Date.gregorian_leap?(2000) # => true
|
|
466
|
+
# Date.gregorian_leap?(2001) # => false
|
|
467
|
+
#
|
|
468
|
+
# Date.leap? is an alias for Date.gregorian_leap?.
|
|
414
469
|
#
|
|
415
|
-
#
|
|
416
|
-
# Date.gregorian_leap?(2000) #=> true
|
|
470
|
+
# Related: Date.julian_leap?.
|
|
417
471
|
#
|
|
418
472
|
def self.leap?: (Integer year) -> bool
|
|
419
473
|
|
|
420
474
|
# <!--
|
|
421
475
|
# rdoc-file=ext/date/date_core.c
|
|
422
|
-
# - Date.ordinal(
|
|
476
|
+
# - Date.ordinal(year = -4712, yday = 1, start = Date::ITALY) -> date
|
|
423
477
|
# -->
|
|
424
|
-
#
|
|
478
|
+
# Returns a new Date object formed fom the arguments.
|
|
479
|
+
#
|
|
480
|
+
# With no arguments, returns the date for January 1, -4712:
|
|
481
|
+
#
|
|
482
|
+
# Date.ordinal.to_s # => "-4712-01-01"
|
|
483
|
+
#
|
|
484
|
+
# With argument `year`, returns the date for January 1 of that year:
|
|
425
485
|
#
|
|
426
|
-
#
|
|
427
|
-
#
|
|
486
|
+
# Date.ordinal(2001).to_s # => "2001-01-01"
|
|
487
|
+
# Date.ordinal(-2001).to_s # => "-2001-01-01"
|
|
428
488
|
#
|
|
429
|
-
#
|
|
430
|
-
#
|
|
431
|
-
# Date.ordinal(2001,-1) #=> #<Date: 2001-12-31 ...>
|
|
489
|
+
# With positive argument `yday` == `n`, returns the date for the `nth` day of
|
|
490
|
+
# the given year:
|
|
432
491
|
#
|
|
433
|
-
#
|
|
492
|
+
# Date.ordinal(2001, 14).to_s # => "2001-01-14"
|
|
493
|
+
#
|
|
494
|
+
# With negative argument `yday`, counts backward from the end of the year:
|
|
495
|
+
#
|
|
496
|
+
# Date.ordinal(2001, -14).to_s # => "2001-12-18"
|
|
497
|
+
#
|
|
498
|
+
# Raises an exception if `yday` is zero or out of range.
|
|
499
|
+
#
|
|
500
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
501
|
+
#
|
|
502
|
+
# Related: Date.jd, Date.new.
|
|
434
503
|
#
|
|
435
504
|
def self.ordinal: (?Integer year, ?Integer yday, ?Integer start) -> Date
|
|
436
505
|
|
|
437
506
|
# <!--
|
|
438
507
|
# rdoc-file=ext/date/date_core.c
|
|
439
|
-
# - Date.parse(string='-4712-01-01'
|
|
508
|
+
# - Date.parse(string = '-4712-01-01', comp = true, start = Date::ITALY, limit: 128) -> date
|
|
440
509
|
# -->
|
|
441
|
-
#
|
|
510
|
+
# **Note**: This method recognizes many forms in `string`, but it is not a
|
|
511
|
+
# validator. For formats, see ["Specialized Format Strings" in Formats for Dates
|
|
512
|
+
# and Times](rdoc-ref:strftime_formatting.rdoc@Specialized+Format+Strings) If
|
|
513
|
+
# `string` does not specify a valid date, the result is unpredictable; consider
|
|
514
|
+
# using Date._strptime instead.
|
|
515
|
+
#
|
|
516
|
+
# Returns a new Date object with values parsed from `string`:
|
|
442
517
|
#
|
|
443
|
-
#
|
|
444
|
-
#
|
|
445
|
-
#
|
|
518
|
+
# Date.parse('2001-02-03') # => #<Date: 2001-02-03>
|
|
519
|
+
# Date.parse('20010203') # => #<Date: 2001-02-03>
|
|
520
|
+
# Date.parse('3rd Feb 2001') # => #<Date: 2001-02-03>
|
|
446
521
|
#
|
|
447
|
-
# If
|
|
448
|
-
#
|
|
522
|
+
# If `comp` is `true` and the given year is in the range `(0..99)`, the current
|
|
523
|
+
# century is supplied; otherwise, the year is taken as given:
|
|
449
524
|
#
|
|
450
|
-
# Date.parse('
|
|
451
|
-
# Date.parse('
|
|
452
|
-
# Date.parse('3rd Feb 2001') #=> #<Date: 2001-02-03 ...>
|
|
525
|
+
# Date.parse('01-02-03', true) # => #<Date: 2001-02-03>
|
|
526
|
+
# Date.parse('01-02-03', false) # => #<Date: 0001-02-03>
|
|
453
527
|
#
|
|
454
|
-
#
|
|
455
|
-
#
|
|
456
|
-
#
|
|
528
|
+
# See:
|
|
529
|
+
#
|
|
530
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
531
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
532
|
+
#
|
|
533
|
+
#
|
|
534
|
+
# Related: Date._parse (returns a hash).
|
|
457
535
|
#
|
|
458
536
|
def self.parse: (String str, ?boolish complete, ?Integer start) -> Date
|
|
459
537
|
|
|
460
538
|
# <!--
|
|
461
539
|
# rdoc-file=ext/date/date_core.c
|
|
462
|
-
# - Date.rfc2822(string='Mon, 1 Jan -4712 00:00:00 +0000'
|
|
463
|
-
# - Date.rfc822(string='Mon, 1 Jan -4712 00:00:00 +0000'[, start=Date::ITALY], limit: 128) -> date
|
|
540
|
+
# - Date.rfc2822(string = 'Mon, 1 Jan -4712 00:00:00 +0000', start = Date::ITALY, limit: 128) -> date
|
|
464
541
|
# -->
|
|
465
|
-
#
|
|
466
|
-
# RFC 2822
|
|
542
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
543
|
+
# valid [RFC 2822 date
|
|
544
|
+
# format](rdoc-ref:strftime_formatting.rdoc@RFC+2822+Format):
|
|
545
|
+
#
|
|
546
|
+
# d = Date.new(2001, 2, 3)
|
|
547
|
+
# s = d.rfc2822 # => "Sat, 3 Feb 2001 00:00:00 +0000"
|
|
548
|
+
# Date.rfc2822(s) # => #<Date: 2001-02-03>
|
|
549
|
+
#
|
|
550
|
+
# See:
|
|
551
|
+
#
|
|
552
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
553
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
467
554
|
#
|
|
468
|
-
# Date.rfc2822('Sat, 3 Feb 2001 00:00:00 +0000')
|
|
469
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
470
555
|
#
|
|
471
|
-
#
|
|
472
|
-
#
|
|
473
|
-
#
|
|
556
|
+
# Date.rfc822 is an alias for Date.rfc2822.
|
|
557
|
+
#
|
|
558
|
+
# Related: Date._rfc2822 (returns a hash).
|
|
474
559
|
#
|
|
475
560
|
def self.rfc2822: (String str, ?Integer start) -> Date
|
|
476
561
|
|
|
477
562
|
# <!--
|
|
478
563
|
# rdoc-file=ext/date/date_core.c
|
|
479
|
-
# - Date.rfc3339(string='-4712-01-01T00:00:00+00:00'
|
|
564
|
+
# - Date.rfc3339(string = '-4712-01-01T00:00:00+00:00', start = Date::ITALY, limit: 128) -> date
|
|
480
565
|
# -->
|
|
481
|
-
#
|
|
482
|
-
# RFC 3339
|
|
566
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
567
|
+
# valid [RFC 3339 format](rdoc-ref:strftime_formatting.rdoc@RFC+3339+Format):
|
|
568
|
+
#
|
|
569
|
+
# d = Date.new(2001, 2, 3)
|
|
570
|
+
# s = d.rfc3339 # => "2001-02-03T00:00:00+00:00"
|
|
571
|
+
# Date.rfc3339(s) # => #<Date: 2001-02-03>
|
|
572
|
+
#
|
|
573
|
+
# See:
|
|
483
574
|
#
|
|
484
|
-
#
|
|
575
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
576
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
485
577
|
#
|
|
486
|
-
#
|
|
487
|
-
#
|
|
488
|
-
# to parse.
|
|
578
|
+
#
|
|
579
|
+
# Related: Date._rfc3339 (returns a hash).
|
|
489
580
|
#
|
|
490
581
|
def self.rfc3339: (String str, ?Integer start) -> Date
|
|
491
582
|
|
|
492
583
|
# <!--
|
|
493
584
|
# rdoc-file=ext/date/date_core.c
|
|
494
|
-
# - Date.rfc2822(string='Mon, 1 Jan -4712 00:00:00 +0000'
|
|
495
|
-
# - Date.rfc822(string='Mon, 1 Jan -4712 00:00:00 +0000'[, start=Date::ITALY], limit: 128) -> date
|
|
585
|
+
# - Date.rfc2822(string = 'Mon, 1 Jan -4712 00:00:00 +0000', start = Date::ITALY, limit: 128) -> date
|
|
496
586
|
# -->
|
|
497
|
-
#
|
|
498
|
-
# RFC 2822
|
|
587
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
588
|
+
# valid [RFC 2822 date
|
|
589
|
+
# format](rdoc-ref:strftime_formatting.rdoc@RFC+2822+Format):
|
|
590
|
+
#
|
|
591
|
+
# d = Date.new(2001, 2, 3)
|
|
592
|
+
# s = d.rfc2822 # => "Sat, 3 Feb 2001 00:00:00 +0000"
|
|
593
|
+
# Date.rfc2822(s) # => #<Date: 2001-02-03>
|
|
499
594
|
#
|
|
500
|
-
#
|
|
501
|
-
# #=> #<Date: 2001-02-03 ...>
|
|
595
|
+
# See:
|
|
502
596
|
#
|
|
503
|
-
#
|
|
504
|
-
#
|
|
505
|
-
#
|
|
597
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
598
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
599
|
+
#
|
|
600
|
+
#
|
|
601
|
+
# Date.rfc822 is an alias for Date.rfc2822.
|
|
602
|
+
#
|
|
603
|
+
# Related: Date._rfc2822 (returns a hash).
|
|
506
604
|
#
|
|
507
605
|
def self.rfc822: (String str, ?Integer start) -> Date
|
|
508
606
|
|
|
509
607
|
# <!--
|
|
510
608
|
# rdoc-file=ext/date/date_core.c
|
|
511
|
-
# - Date.strptime(
|
|
609
|
+
# - Date.strptime(string = '-4712-01-01', format = '%F', start = Date::ITALY) -> date
|
|
512
610
|
# -->
|
|
513
|
-
#
|
|
514
|
-
#
|
|
515
|
-
#
|
|
611
|
+
# Returns a new Date object with values parsed from `string`, according to the
|
|
612
|
+
# given `format`:
|
|
613
|
+
#
|
|
614
|
+
# Date.strptime('2001-02-03', '%Y-%m-%d') # => #<Date: 2001-02-03>
|
|
615
|
+
# Date.strptime('03-02-2001', '%d-%m-%Y') # => #<Date: 2001-02-03>
|
|
616
|
+
# Date.strptime('2001-034', '%Y-%j') # => #<Date: 2001-02-03>
|
|
617
|
+
# Date.strptime('2001-W05-6', '%G-W%V-%u') # => #<Date: 2001-02-03>
|
|
618
|
+
# Date.strptime('2001 04 6', '%Y %U %w') # => #<Date: 2001-02-03>
|
|
619
|
+
# Date.strptime('2001 05 6', '%Y %W %u') # => #<Date: 2001-02-03>
|
|
620
|
+
# Date.strptime('sat3feb01', '%a%d%b%y') # => #<Date: 2001-02-03>
|
|
621
|
+
#
|
|
622
|
+
# For other formats, see [Formats for Dates and
|
|
623
|
+
# Times](rdoc-ref:strftime_formatting.rdoc). (Unlike Date.strftime, does not
|
|
624
|
+
# support flags and width.)
|
|
625
|
+
#
|
|
626
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
516
627
|
#
|
|
517
|
-
#
|
|
518
|
-
# Date.strptime('03-02-2001', '%d-%m-%Y') #=> #<Date: 2001-02-03 ...>
|
|
519
|
-
# Date.strptime('2001-034', '%Y-%j') #=> #<Date: 2001-02-03 ...>
|
|
520
|
-
# Date.strptime('2001-W05-6', '%G-W%V-%u') #=> #<Date: 2001-02-03 ...>
|
|
521
|
-
# Date.strptime('2001 04 6', '%Y %U %w') #=> #<Date: 2001-02-03 ...>
|
|
522
|
-
# Date.strptime('2001 05 6', '%Y %W %u') #=> #<Date: 2001-02-03 ...>
|
|
523
|
-
# Date.strptime('sat3feb01', '%a%d%b%y') #=> #<Date: 2001-02-03 ...>
|
|
628
|
+
# See also [strptime(3)](https://man7.org/linux/man-pages/man3/strptime.3.html).
|
|
524
629
|
#
|
|
525
|
-
#
|
|
630
|
+
# Related: Date._strptime (returns a hash).
|
|
526
631
|
#
|
|
527
632
|
def self.strptime: (String str, ?String format, ?Integer start) -> Date
|
|
528
633
|
|
|
529
634
|
# <!--
|
|
530
635
|
# rdoc-file=ext/date/date_core.c
|
|
531
|
-
# - Date.today(
|
|
636
|
+
# - Date.today(start = Date::ITALY) -> date
|
|
532
637
|
# -->
|
|
533
|
-
#
|
|
638
|
+
# Returns a new Date object constructed from the present date:
|
|
534
639
|
#
|
|
535
|
-
# Date.today
|
|
640
|
+
# Date.today.to_s # => "2022-07-06"
|
|
641
|
+
#
|
|
642
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
536
643
|
#
|
|
537
644
|
def self.today: (?Integer start) -> Date
|
|
538
645
|
|
|
539
646
|
# <!--
|
|
540
647
|
# rdoc-file=ext/date/date_core.c
|
|
541
|
-
# - Date.valid_civil?(year, month, mday
|
|
542
|
-
# - Date.valid_date?(year, month, mday[, start=Date::ITALY]) -> bool
|
|
648
|
+
# - Date.valid_civil?(year, month, mday, start = Date::ITALY) -> true or false
|
|
543
649
|
# -->
|
|
544
|
-
# Returns true if the
|
|
545
|
-
#
|
|
546
|
-
#
|
|
650
|
+
# Returns `true` if the arguments define a valid ordinal date, `false`
|
|
651
|
+
# otherwise:
|
|
652
|
+
#
|
|
653
|
+
# Date.valid_date?(2001, 2, 3) # => true
|
|
654
|
+
# Date.valid_date?(2001, 2, 29) # => false
|
|
655
|
+
# Date.valid_date?(2001, 2, -1) # => true
|
|
656
|
+
#
|
|
657
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
547
658
|
#
|
|
548
|
-
#
|
|
549
|
-
# Date.valid_date?(2001,2,29) #=> false
|
|
550
|
-
# Date.valid_date?(2001,2,-1) #=> true
|
|
659
|
+
# Date.valid_date? is an alias for Date.valid_civil?.
|
|
551
660
|
#
|
|
552
|
-
#
|
|
661
|
+
# Related: Date.jd, Date.new.
|
|
553
662
|
#
|
|
554
663
|
def self.valid_civil?: (Integer year, Integer month, Integer mday, ?Integer start) -> bool
|
|
555
664
|
|
|
556
665
|
# <!--
|
|
557
666
|
# rdoc-file=ext/date/date_core.c
|
|
558
|
-
# - Date.valid_commercial?(cwyear, cweek, cwday
|
|
667
|
+
# - Date.valid_commercial?(cwyear, cweek, cwday, start = Date::ITALY) -> true or false
|
|
559
668
|
# -->
|
|
560
|
-
# Returns true if the
|
|
669
|
+
# Returns `true` if the arguments define a valid commercial date, `false`
|
|
670
|
+
# otherwise:
|
|
561
671
|
#
|
|
562
|
-
# Date.valid_commercial?(2001,5,6)
|
|
563
|
-
# Date.valid_commercial?(2001,5,8)
|
|
672
|
+
# Date.valid_commercial?(2001, 5, 6) # => true
|
|
673
|
+
# Date.valid_commercial?(2001, 5, 8) # => false
|
|
564
674
|
#
|
|
565
|
-
# See
|
|
675
|
+
# See Date.commercial.
|
|
676
|
+
#
|
|
677
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
678
|
+
#
|
|
679
|
+
# Related: Date.jd, Date.commercial.
|
|
566
680
|
#
|
|
567
681
|
def self.valid_commercial?: (Integer cwyear, Integer cweek, Integer cwday, ?Integer start) -> bool
|
|
568
682
|
|
|
569
683
|
# <!--
|
|
570
684
|
# rdoc-file=ext/date/date_core.c
|
|
571
|
-
# - Date.valid_civil?(year, month, mday
|
|
572
|
-
# - Date.valid_date?(year, month, mday[, start=Date::ITALY]) -> bool
|
|
685
|
+
# - Date.valid_civil?(year, month, mday, start = Date::ITALY) -> true or false
|
|
573
686
|
# -->
|
|
574
|
-
# Returns true if the
|
|
575
|
-
#
|
|
576
|
-
#
|
|
687
|
+
# Returns `true` if the arguments define a valid ordinal date, `false`
|
|
688
|
+
# otherwise:
|
|
689
|
+
#
|
|
690
|
+
# Date.valid_date?(2001, 2, 3) # => true
|
|
691
|
+
# Date.valid_date?(2001, 2, 29) # => false
|
|
692
|
+
# Date.valid_date?(2001, 2, -1) # => true
|
|
577
693
|
#
|
|
578
|
-
#
|
|
579
|
-
# Date.valid_date?(2001,2,29) #=> false
|
|
580
|
-
# Date.valid_date?(2001,2,-1) #=> true
|
|
694
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
581
695
|
#
|
|
582
|
-
#
|
|
696
|
+
# Date.valid_date? is an alias for Date.valid_civil?.
|
|
697
|
+
#
|
|
698
|
+
# Related: Date.jd, Date.new.
|
|
583
699
|
#
|
|
584
700
|
def self.valid_date?: (Integer year, Integer month, Integer mday, ?Integer start) -> bool
|
|
585
701
|
|
|
586
702
|
# <!--
|
|
587
703
|
# rdoc-file=ext/date/date_core.c
|
|
588
|
-
# - Date.valid_jd?(jd
|
|
704
|
+
# - Date.valid_jd?(jd, start = Date::ITALY) -> true
|
|
589
705
|
# -->
|
|
590
|
-
#
|
|
706
|
+
# Implemented for compatibility; returns `true` unless `jd` is invalid (i.e.,
|
|
707
|
+
# not a Numeric).
|
|
708
|
+
#
|
|
709
|
+
# Date.valid_jd?(2451944) # => true
|
|
591
710
|
#
|
|
592
|
-
#
|
|
711
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
593
712
|
#
|
|
594
|
-
#
|
|
713
|
+
# Related: Date.jd.
|
|
595
714
|
#
|
|
596
715
|
def self.valid_jd?: (Integer jd, ?Integer start) -> bool
|
|
597
716
|
|
|
598
717
|
# <!--
|
|
599
718
|
# rdoc-file=ext/date/date_core.c
|
|
600
|
-
# - Date.valid_ordinal?(year, yday
|
|
719
|
+
# - Date.valid_ordinal?(year, yday, start = Date::ITALY) -> true or false
|
|
601
720
|
# -->
|
|
602
|
-
# Returns true if the
|
|
721
|
+
# Returns `true` if the arguments define a valid ordinal date, `false`
|
|
722
|
+
# otherwise:
|
|
723
|
+
#
|
|
724
|
+
# Date.valid_ordinal?(2001, 34) # => true
|
|
725
|
+
# Date.valid_ordinal?(2001, 366) # => false
|
|
603
726
|
#
|
|
604
|
-
#
|
|
605
|
-
# Date.valid_ordinal?(2001,366) #=> false
|
|
727
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
606
728
|
#
|
|
607
|
-
#
|
|
729
|
+
# Related: Date.jd, Date.ordinal.
|
|
608
730
|
#
|
|
609
731
|
def self.valid_ordinal?: (Integer year, Integer yday, ?Integer start) -> bool
|
|
610
732
|
|
|
611
733
|
# <!--
|
|
612
734
|
# rdoc-file=ext/date/date_core.c
|
|
613
|
-
# - Date.xmlschema(string='-4712-01-01'
|
|
735
|
+
# - Date.xmlschema(string = '-4712-01-01', start = Date::ITALY, limit: 128) -> date
|
|
614
736
|
# -->
|
|
615
|
-
#
|
|
616
|
-
# XML
|
|
737
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
738
|
+
# valid XML date format:
|
|
739
|
+
#
|
|
740
|
+
# d = Date.new(2001, 2, 3)
|
|
741
|
+
# s = d.xmlschema # => "2001-02-03"
|
|
742
|
+
# Date.xmlschema(s) # => #<Date: 2001-02-03>
|
|
743
|
+
#
|
|
744
|
+
# See:
|
|
745
|
+
#
|
|
746
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
747
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
617
748
|
#
|
|
618
|
-
# Date.xmlschema('2001-02-03') #=> #<Date: 2001-02-03 ...>
|
|
619
749
|
#
|
|
620
|
-
#
|
|
621
|
-
# stop this check by passing `limit: nil`, but note that it may take a long time
|
|
622
|
-
# to parse.
|
|
750
|
+
# Related: Date._xmlschema (returns a hash).
|
|
623
751
|
#
|
|
624
752
|
def self.xmlschema: (String str, ?Integer start) -> Date
|
|
625
753
|
|
|
@@ -667,85 +795,134 @@ class Date
|
|
|
667
795
|
# rdoc-file=ext/date/date_core.c
|
|
668
796
|
# - d << n -> date
|
|
669
797
|
# -->
|
|
670
|
-
# Returns a
|
|
671
|
-
# be a numeric
|
|
798
|
+
# Returns a new Date object representing the date `n` months earlier; `n` should
|
|
799
|
+
# be a numeric:
|
|
672
800
|
#
|
|
673
|
-
# Date.new(2001,2,3)
|
|
674
|
-
# Date.new(2001,2,3)
|
|
801
|
+
# (Date.new(2001, 2, 3) << 1).to_s # => "2001-01-03"
|
|
802
|
+
# (Date.new(2001, 2, 3) << -2).to_s # => "2001-04-03"
|
|
675
803
|
#
|
|
676
|
-
# When the same day does not exist for the
|
|
677
|
-
#
|
|
804
|
+
# When the same day does not exist for the new month, the last day of that month
|
|
805
|
+
# is used instead:
|
|
678
806
|
#
|
|
679
|
-
# Date.new(2001,3,
|
|
680
|
-
# Date.new(2001,3,31) <<
|
|
807
|
+
# (Date.new(2001, 3, 31) << 1).to_s # => "2001-02-28"
|
|
808
|
+
# (Date.new(2001, 3, 31) << -6).to_s # => "2001-09-30"
|
|
681
809
|
#
|
|
682
|
-
# This
|
|
810
|
+
# This results in the following, possibly unexpected, behaviors:
|
|
683
811
|
#
|
|
684
|
-
# Date.new(2001,3,31)
|
|
685
|
-
#
|
|
812
|
+
# d0 = Date.new(2001, 3, 31)
|
|
813
|
+
# d0 << 2 # => #<Date: 2001-01-31>
|
|
814
|
+
# d0 << 1 << 1 # => #<Date: 2001-01-28>
|
|
686
815
|
#
|
|
687
|
-
# Date.new(2001,3,31)
|
|
816
|
+
# d0 = Date.new(2001, 3, 31)
|
|
817
|
+
# d1 = d0 << 1 # => #<Date: 2001-02-28>
|
|
818
|
+
# d2 = d1 << -1 # => #<Date: 2001-03-28>
|
|
688
819
|
#
|
|
689
820
|
def <<: (Integer month) -> Date
|
|
690
821
|
|
|
691
822
|
# <!--
|
|
692
823
|
# rdoc-file=ext/date/date_core.c
|
|
693
|
-
# -
|
|
824
|
+
# - self <=> other -> -1, 0, 1 or nil
|
|
694
825
|
# -->
|
|
695
|
-
# Compares
|
|
696
|
-
#
|
|
826
|
+
# Compares `self` and `other`, returning:
|
|
827
|
+
#
|
|
828
|
+
# * `-1` if `other` is larger.
|
|
829
|
+
# * `0` if the two are equal.
|
|
830
|
+
# * `1` if `other` is smaller.
|
|
831
|
+
# * `nil` if the two are incomparable.
|
|
832
|
+
#
|
|
833
|
+
#
|
|
834
|
+
# Argument `other` may be:
|
|
835
|
+
#
|
|
836
|
+
# * Another Date object:
|
|
837
|
+
#
|
|
838
|
+
# d = Date.new(2022, 7, 27) # => #<Date: 2022-07-27 ((2459788j,0s,0n),+0s,2299161j)>
|
|
839
|
+
# prev_date = d.prev_day # => #<Date: 2022-07-26 ((2459787j,0s,0n),+0s,2299161j)>
|
|
840
|
+
# next_date = d.next_day # => #<Date: 2022-07-28 ((2459789j,0s,0n),+0s,2299161j)>
|
|
841
|
+
# d <=> next_date # => -1
|
|
842
|
+
# d <=> d # => 0
|
|
843
|
+
# d <=> prev_date # => 1
|
|
697
844
|
#
|
|
698
|
-
#
|
|
699
|
-
# Date.new(2001,2,3) <=> Date.new(2001,2,3) #=> 0
|
|
700
|
-
# Date.new(2001,2,3) <=> Date.new(2001,2,2) #=> 1
|
|
701
|
-
# Date.new(2001,2,3) <=> Object.new #=> nil
|
|
702
|
-
# Date.new(2001,2,3) <=> Rational(4903887,2) #=> 0
|
|
845
|
+
# * A DateTime object:
|
|
703
846
|
#
|
|
704
|
-
#
|
|
847
|
+
# d <=> DateTime.new(2022, 7, 26) # => 1
|
|
848
|
+
# d <=> DateTime.new(2022, 7, 27) # => 0
|
|
849
|
+
# d <=> DateTime.new(2022, 7, 28) # => -1
|
|
850
|
+
#
|
|
851
|
+
# * A numeric (compares `self.ajd` to `other`):
|
|
852
|
+
#
|
|
853
|
+
# d <=> 2459788 # => -1
|
|
854
|
+
# d <=> 2459787 # => 1
|
|
855
|
+
# d <=> 2459786 # => 1
|
|
856
|
+
# d <=> d.ajd # => 0
|
|
857
|
+
#
|
|
858
|
+
# * Any other object:
|
|
859
|
+
#
|
|
860
|
+
# d <=> Object.new # => nil
|
|
705
861
|
#
|
|
706
862
|
def <=>: (untyped other) -> Integer?
|
|
707
863
|
|
|
708
864
|
# <!--
|
|
709
865
|
# rdoc-file=ext/date/date_core.c
|
|
710
|
-
# -
|
|
866
|
+
# - self === other -> true, false, or nil.
|
|
711
867
|
# -->
|
|
712
|
-
# Returns true if
|
|
868
|
+
# Returns `true` if `self` and `other` represent the same date, `false` if not,
|
|
869
|
+
# `nil` if the two are not comparable.
|
|
870
|
+
#
|
|
871
|
+
# Argument `other` may be:
|
|
872
|
+
#
|
|
873
|
+
# * Another Date object:
|
|
874
|
+
#
|
|
875
|
+
# d = Date.new(2022, 7, 27) # => #<Date: 2022-07-27 ((2459788j,0s,0n),+0s,2299161j)>
|
|
876
|
+
# prev_date = d.prev_day # => #<Date: 2022-07-26 ((2459787j,0s,0n),+0s,2299161j)>
|
|
877
|
+
# next_date = d.next_day # => #<Date: 2022-07-28 ((2459789j,0s,0n),+0s,2299161j)>
|
|
878
|
+
# d === prev_date # => false
|
|
879
|
+
# d === d # => true
|
|
880
|
+
# d === next_date # => false
|
|
881
|
+
#
|
|
882
|
+
# * A DateTime object:
|
|
883
|
+
#
|
|
884
|
+
# d === DateTime.new(2022, 7, 26) # => false
|
|
885
|
+
# d === DateTime.new(2022, 7, 27) # => true
|
|
886
|
+
# d === DateTime.new(2022, 7, 28) # => false
|
|
887
|
+
#
|
|
888
|
+
# * A numeric (compares `self.jd` to `other`):
|
|
889
|
+
#
|
|
890
|
+
# d === 2459788 # => true
|
|
891
|
+
# d === 2459787 # => false
|
|
892
|
+
# d === 2459786 # => false
|
|
893
|
+
# d === d.jd # => true
|
|
894
|
+
#
|
|
895
|
+
# * An object not comparable:
|
|
713
896
|
#
|
|
714
|
-
#
|
|
715
|
-
# #=> true
|
|
716
|
-
# Date.new(2001,2,3) === Date.new(2001,2,4)
|
|
717
|
-
# #=> false
|
|
718
|
-
# DateTime.new(2001,2,3) === DateTime.new(2001,2,3,12)
|
|
719
|
-
# #=> true
|
|
720
|
-
# DateTime.new(2001,2,3) === DateTime.new(2001,2,3,0,0,0,'+24:00')
|
|
721
|
-
# #=> true
|
|
722
|
-
# DateTime.new(2001,2,3) === DateTime.new(2001,2,4,0,0,0,'+24:00')
|
|
723
|
-
# #=> false
|
|
897
|
+
# d === Object.new # => nil
|
|
724
898
|
#
|
|
725
899
|
def ===: (Date other) -> bool
|
|
726
900
|
|
|
727
901
|
# <!--
|
|
728
902
|
# rdoc-file=ext/date/date_core.c
|
|
729
|
-
# - d >> n
|
|
903
|
+
# - d >> n -> new_date
|
|
730
904
|
# -->
|
|
731
|
-
# Returns a
|
|
732
|
-
# be a numeric
|
|
905
|
+
# Returns a new Date object representing the date `n` months later; `n` should
|
|
906
|
+
# be a numeric:
|
|
733
907
|
#
|
|
734
|
-
# Date.new(2001,2,3)
|
|
735
|
-
# Date.new(2001,2,3)
|
|
908
|
+
# (Date.new(2001, 2, 3) >> 1).to_s # => "2001-03-03"
|
|
909
|
+
# (Date.new(2001, 2, 3) >> -2).to_s # => "2000-12-03"
|
|
736
910
|
#
|
|
737
|
-
# When the same day does not exist for the
|
|
738
|
-
#
|
|
911
|
+
# When the same day does not exist for the new month, the last day of that month
|
|
912
|
+
# is used instead:
|
|
739
913
|
#
|
|
740
|
-
# Date.new(2001,1,
|
|
741
|
-
# Date.new(2001,1,31) >>
|
|
914
|
+
# (Date.new(2001, 1, 31) >> 1).to_s # => "2001-02-28"
|
|
915
|
+
# (Date.new(2001, 1, 31) >> -4).to_s # => "2000-09-30"
|
|
742
916
|
#
|
|
743
|
-
# This
|
|
917
|
+
# This results in the following, possibly unexpected, behaviors:
|
|
744
918
|
#
|
|
745
|
-
# Date.new(2001,1,31)
|
|
746
|
-
#
|
|
919
|
+
# d0 = Date.new(2001, 1, 31)
|
|
920
|
+
# d1 = d0 >> 1 # => #<Date: 2001-02-28>
|
|
921
|
+
# d2 = d1 >> 1 # => #<Date: 2001-03-28>
|
|
747
922
|
#
|
|
748
|
-
# Date.new(2001,1,31)
|
|
923
|
+
# d0 = Date.new(2001, 1, 31)
|
|
924
|
+
# d1 = d0 >> 1 # => #<Date: 2001-02-28>
|
|
925
|
+
# d2 = d1 >> -1 # => #<Date: 2001-01-28>
|
|
749
926
|
#
|
|
750
927
|
def >>: (Integer month) -> Date
|
|
751
928
|
|
|
@@ -775,143 +952,194 @@ class Date
|
|
|
775
952
|
|
|
776
953
|
# <!--
|
|
777
954
|
# rdoc-file=ext/date/date_core.c
|
|
778
|
-
# -
|
|
779
|
-
# - d.ctime -> string
|
|
955
|
+
# - asctime -> string
|
|
780
956
|
# -->
|
|
781
|
-
#
|
|
782
|
-
#
|
|
957
|
+
# Equivalent to #strftime with argument `'%a %b %e %T %Y'` (or its [shorthand
|
|
958
|
+
# form](rdoc-ref:strftime_formatting.rdoc@Shorthand+Conversion+Specifiers)
|
|
959
|
+
# `'%c'`):
|
|
783
960
|
#
|
|
784
|
-
#
|
|
961
|
+
# Date.new(2001, 2, 3).asctime # => "Sat Feb 3 00:00:00 2001"
|
|
962
|
+
#
|
|
963
|
+
# See [asctime](https://linux.die.net/man/3/asctime).
|
|
964
|
+
#
|
|
965
|
+
# Date#ctime is an alias for Date#asctime.
|
|
785
966
|
#
|
|
786
967
|
def asctime: () -> String
|
|
787
968
|
|
|
788
969
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
789
|
-
#
|
|
790
|
-
#
|
|
970
|
+
# Equivalent to #strftime with argument `'%a %b %e %T %Y'` (or its [shorthand
|
|
971
|
+
# form](rdoc-ref:strftime_formatting.rdoc@Shorthand+Conversion+Specifiers)
|
|
972
|
+
# `'%c'`):
|
|
973
|
+
#
|
|
974
|
+
# Date.new(2001, 2, 3).asctime # => "Sat Feb 3 00:00:00 2001"
|
|
791
975
|
#
|
|
792
|
-
# See
|
|
976
|
+
# See [asctime](https://linux.die.net/man/3/asctime).
|
|
977
|
+
#
|
|
978
|
+
# Date#ctime is an alias for Date#asctime.
|
|
793
979
|
#
|
|
794
980
|
def ctime: () -> String
|
|
795
981
|
|
|
796
982
|
# <!--
|
|
797
983
|
# rdoc-file=ext/date/date_core.c
|
|
798
|
-
# -
|
|
984
|
+
# - cwday -> integer
|
|
799
985
|
# -->
|
|
800
|
-
# Returns the
|
|
986
|
+
# Returns the commercial-date weekday index for `self` (see Date.commercial); 1
|
|
987
|
+
# is Monday:
|
|
801
988
|
#
|
|
802
|
-
# Date.new(2001,2,3).cwday
|
|
989
|
+
# Date.new(2001, 2, 3).cwday # => 6
|
|
803
990
|
#
|
|
804
991
|
def cwday: () -> Integer
|
|
805
992
|
|
|
806
993
|
# <!--
|
|
807
994
|
# rdoc-file=ext/date/date_core.c
|
|
808
|
-
# -
|
|
995
|
+
# - cweek -> integer
|
|
809
996
|
# -->
|
|
810
|
-
# Returns
|
|
997
|
+
# Returns commercial-date week index for `self` (see Date.commercial):
|
|
811
998
|
#
|
|
812
|
-
# Date.new(2001,2,3).cweek
|
|
999
|
+
# Date.new(2001, 2, 3).cweek # => 5
|
|
813
1000
|
#
|
|
814
1001
|
def cweek: () -> Integer
|
|
815
1002
|
|
|
816
1003
|
# <!--
|
|
817
1004
|
# rdoc-file=ext/date/date_core.c
|
|
818
|
-
# -
|
|
1005
|
+
# - cwyear -> integer
|
|
819
1006
|
# -->
|
|
820
|
-
# Returns
|
|
1007
|
+
# Returns commercial-date year for `self` (see Date.commercial):
|
|
821
1008
|
#
|
|
822
|
-
# Date.new(2001,2,3).cwyear
|
|
823
|
-
# Date.new(2000,1,1).cwyear
|
|
1009
|
+
# Date.new(2001, 2, 3).cwyear # => 2001
|
|
1010
|
+
# Date.new(2000, 1, 1).cwyear # => 1999
|
|
824
1011
|
#
|
|
825
1012
|
def cwyear: () -> Integer
|
|
826
1013
|
|
|
827
1014
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
828
|
-
# Returns the day of the month (1
|
|
1015
|
+
# Returns the day of the month in range (1..31):
|
|
1016
|
+
#
|
|
1017
|
+
# Date.new(2001, 2, 3).mday # => 3
|
|
829
1018
|
#
|
|
830
|
-
#
|
|
1019
|
+
# Date#day is an alias for Date#mday.
|
|
831
1020
|
#
|
|
832
1021
|
def day: () -> Integer
|
|
833
1022
|
|
|
834
1023
|
# <!--
|
|
835
1024
|
# rdoc-file=ext/date/date_core.c
|
|
836
|
-
# -
|
|
837
|
-
#
|
|
1025
|
+
# - deconstruct_keys(array_of_names_or_nil) -> hash
|
|
1026
|
+
# -->
|
|
1027
|
+
# Returns a hash of the name/value pairs, to use in pattern matching. Possible
|
|
1028
|
+
# keys are: `:year`, `:month`, `:day`, `:wday`, `:yday`.
|
|
1029
|
+
#
|
|
1030
|
+
# Possible usages:
|
|
1031
|
+
#
|
|
1032
|
+
# d = Date.new(2022, 10, 5)
|
|
1033
|
+
#
|
|
1034
|
+
# if d in wday: 3, day: ..7 # uses deconstruct_keys underneath
|
|
1035
|
+
# puts "first Wednesday of the month"
|
|
1036
|
+
# end
|
|
1037
|
+
# #=> prints "first Wednesday of the month"
|
|
1038
|
+
#
|
|
1039
|
+
# case d
|
|
1040
|
+
# in year: ...2022
|
|
1041
|
+
# puts "too old"
|
|
1042
|
+
# in month: ..9
|
|
1043
|
+
# puts "quarter 1-3"
|
|
1044
|
+
# in wday: 1..5, month:
|
|
1045
|
+
# puts "working day in month #{month}"
|
|
1046
|
+
# end
|
|
1047
|
+
# #=> prints "working day in month 10"
|
|
1048
|
+
#
|
|
1049
|
+
# Note that deconstruction by pattern can also be combined with class check:
|
|
1050
|
+
#
|
|
1051
|
+
# if d in Date(wday: 3, day: ..7)
|
|
1052
|
+
# puts "first Wednesday of the month"
|
|
1053
|
+
# end
|
|
1054
|
+
#
|
|
1055
|
+
def deconstruct_keys: (Array[Symbol]?) -> Hash[Symbol, Integer]
|
|
1056
|
+
|
|
1057
|
+
# <!--
|
|
1058
|
+
# rdoc-file=ext/date/date_core.c
|
|
1059
|
+
# - downto(min){|date| ... } -> self
|
|
838
1060
|
# -->
|
|
839
|
-
#
|
|
1061
|
+
# Equivalent to #step with arguments `min` and `-1`.
|
|
840
1062
|
#
|
|
841
1063
|
def downto: (Date min) { (Date) -> untyped } -> Date
|
|
842
1064
|
| (Date min) -> Enumerator[Date, Date]
|
|
843
1065
|
|
|
844
1066
|
# <!--
|
|
845
1067
|
# rdoc-file=ext/date/date_core.c
|
|
846
|
-
# -
|
|
1068
|
+
# - england -> new_date
|
|
847
1069
|
# -->
|
|
848
|
-
#
|
|
1070
|
+
# Equivalent to Date#new_start with argument Date::ENGLAND.
|
|
849
1071
|
#
|
|
850
1072
|
def england: () -> Date
|
|
851
1073
|
|
|
852
1074
|
# <!--
|
|
853
1075
|
# rdoc-file=ext/date/date_core.c
|
|
854
|
-
# -
|
|
1076
|
+
# - friday? -> true or false
|
|
855
1077
|
# -->
|
|
856
|
-
# Returns true if
|
|
1078
|
+
# Returns `true` if `self` is a Friday, `false` otherwise.
|
|
857
1079
|
#
|
|
858
1080
|
def friday?: () -> bool
|
|
859
1081
|
|
|
860
1082
|
# <!--
|
|
861
1083
|
# rdoc-file=ext/date/date_core.c
|
|
862
|
-
# -
|
|
1084
|
+
# - gregorian -> new_date
|
|
863
1085
|
# -->
|
|
864
|
-
#
|
|
1086
|
+
# Equivalent to Date#new_start with argument Date::GREGORIAN.
|
|
865
1087
|
#
|
|
866
1088
|
def gregorian: () -> Date
|
|
867
1089
|
|
|
868
1090
|
# <!--
|
|
869
1091
|
# rdoc-file=ext/date/date_core.c
|
|
870
|
-
# -
|
|
1092
|
+
# - gregorian? -> true or false
|
|
871
1093
|
# -->
|
|
872
|
-
# Returns true if the date is on or after the
|
|
1094
|
+
# Returns `true` if the date is on or after the date of calendar reform, `false`
|
|
1095
|
+
# otherwise:
|
|
873
1096
|
#
|
|
874
|
-
# Date.new(1582,10,15).gregorian?
|
|
875
|
-
# (Date.new(1582,10,15) - 1).gregorian?
|
|
1097
|
+
# Date.new(1582, 10, 15).gregorian? # => true
|
|
1098
|
+
# (Date.new(1582, 10, 15) - 1).gregorian? # => false
|
|
876
1099
|
#
|
|
877
1100
|
def gregorian?: () -> bool
|
|
878
1101
|
|
|
879
1102
|
# <!--
|
|
880
1103
|
# rdoc-file=ext/date/date_core.c
|
|
881
|
-
# -
|
|
1104
|
+
# - httpdate -> string
|
|
882
1105
|
# -->
|
|
883
|
-
#
|
|
884
|
-
#
|
|
1106
|
+
# Equivalent to #strftime with argument `'%a, %d %b %Y %T GMT'`; see [Formats
|
|
1107
|
+
# for Dates and Times](rdoc-ref:strftime_formatting.rdoc):
|
|
1108
|
+
#
|
|
1109
|
+
# Date.new(2001, 2, 3).httpdate # => "Sat, 03 Feb 2001 00:00:00 GMT"
|
|
885
1110
|
#
|
|
886
1111
|
def httpdate: () -> String
|
|
887
1112
|
|
|
888
1113
|
# <!--
|
|
889
1114
|
# rdoc-file=ext/date/date_core.c
|
|
890
|
-
# -
|
|
1115
|
+
# - inspect -> string
|
|
891
1116
|
# -->
|
|
892
|
-
# Returns
|
|
1117
|
+
# Returns a string representation of `self`:
|
|
893
1118
|
#
|
|
894
|
-
# Date.new(2001,2,3).inspect
|
|
895
|
-
#
|
|
896
|
-
# DateTime.new(2001,2,3,4,5,6,'-7').inspect
|
|
897
|
-
# #=> "#<DateTime: 2001-02-03T04:05:06-07:00>"
|
|
1119
|
+
# Date.new(2001, 2, 3).inspect
|
|
1120
|
+
# # => "#<Date: 2001-02-03 ((2451944j,0s,0n),+0s,2299161j)>"
|
|
898
1121
|
#
|
|
899
1122
|
def inspect: () -> String
|
|
900
1123
|
|
|
901
1124
|
# <!--
|
|
902
1125
|
# rdoc-file=ext/date/date_core.c
|
|
903
|
-
# -
|
|
904
|
-
# - d.xmlschema -> string
|
|
1126
|
+
# - iso8601 -> string
|
|
905
1127
|
# -->
|
|
906
|
-
#
|
|
1128
|
+
# Equivalent to #strftime with argument `'%Y-%m-%d'` (or its [shorthand
|
|
1129
|
+
# form](rdoc-ref:strftime_formatting.rdoc@Shorthand+Conversion+Specifiers)
|
|
1130
|
+
# `'%F'`);
|
|
1131
|
+
#
|
|
1132
|
+
# Date.new(2001, 2, 3).iso8601 # => "2001-02-03"
|
|
1133
|
+
#
|
|
1134
|
+
# Date#xmlschema is an alias for Date#iso8601.
|
|
907
1135
|
#
|
|
908
1136
|
def iso8601: () -> String
|
|
909
1137
|
|
|
910
1138
|
# <!--
|
|
911
1139
|
# rdoc-file=ext/date/date_core.c
|
|
912
|
-
# -
|
|
1140
|
+
# - italy -> new_date
|
|
913
1141
|
# -->
|
|
914
|
-
#
|
|
1142
|
+
# Equivalent to Date#new_start with argument Date::ITALY.
|
|
915
1143
|
#
|
|
916
1144
|
def italy: () -> Date
|
|
917
1145
|
|
|
@@ -929,63 +1157,66 @@ class Date
|
|
|
929
1157
|
|
|
930
1158
|
# <!--
|
|
931
1159
|
# rdoc-file=ext/date/date_core.c
|
|
932
|
-
# -
|
|
1160
|
+
# - jisx0301 -> string
|
|
933
1161
|
# -->
|
|
934
|
-
# Returns a string in
|
|
1162
|
+
# Returns a string representation of the date in `self` in JIS X 0301 format.
|
|
935
1163
|
#
|
|
936
|
-
# Date.new(2001,2,3).jisx0301
|
|
1164
|
+
# Date.new(2001, 2, 3).jisx0301 # => "H13.02.03"
|
|
937
1165
|
#
|
|
938
1166
|
def jisx0301: () -> String
|
|
939
1167
|
|
|
940
1168
|
# <!--
|
|
941
1169
|
# rdoc-file=ext/date/date_core.c
|
|
942
|
-
# -
|
|
1170
|
+
# - julian -> new_date
|
|
943
1171
|
# -->
|
|
944
|
-
#
|
|
1172
|
+
# Equivalent to Date#new_start with argument Date::JULIAN.
|
|
945
1173
|
#
|
|
946
1174
|
def julian: () -> Date
|
|
947
1175
|
|
|
948
1176
|
# <!--
|
|
949
1177
|
# rdoc-file=ext/date/date_core.c
|
|
950
|
-
# - d.julian?
|
|
1178
|
+
# - d.julian? -> true or false
|
|
951
1179
|
# -->
|
|
952
|
-
# Returns true if the date is before the
|
|
1180
|
+
# Returns `true` if the date is before the date of calendar reform, `false`
|
|
1181
|
+
# otherwise:
|
|
953
1182
|
#
|
|
954
|
-
# Date.new(1582,10,15).julian?
|
|
955
|
-
#
|
|
1183
|
+
# (Date.new(1582, 10, 15) - 1).julian? # => true
|
|
1184
|
+
# Date.new(1582, 10, 15).julian? # => false
|
|
956
1185
|
#
|
|
957
1186
|
def julian?: () -> bool
|
|
958
1187
|
|
|
959
1188
|
# <!--
|
|
960
1189
|
# rdoc-file=ext/date/date_core.c
|
|
961
|
-
# -
|
|
1190
|
+
# - ld -> integer
|
|
962
1191
|
# -->
|
|
963
|
-
# Returns the Lilian day number.
|
|
964
|
-
# the
|
|
1192
|
+
# Returns the [Lilian day number](https://en.wikipedia.org/wiki/Lilian_date),
|
|
1193
|
+
# which is the number of days since the beginning of the Gregorian calendar,
|
|
1194
|
+
# October 15, 1582.
|
|
965
1195
|
#
|
|
966
|
-
# Date.new(2001,2,3).ld
|
|
1196
|
+
# Date.new(2001, 2, 3).ld # => 152784
|
|
967
1197
|
#
|
|
968
1198
|
def ld: () -> Integer
|
|
969
1199
|
|
|
970
1200
|
# <!--
|
|
971
1201
|
# rdoc-file=ext/date/date_core.c
|
|
972
|
-
# -
|
|
1202
|
+
# - leap? -> true or false
|
|
973
1203
|
# -->
|
|
974
|
-
# Returns true if the year is a leap year
|
|
1204
|
+
# Returns `true` if the year is a leap year, `false` otherwise:
|
|
975
1205
|
#
|
|
976
|
-
# Date.new(2000).leap?
|
|
977
|
-
# Date.new(2001).leap?
|
|
1206
|
+
# Date.new(2000).leap? # => true
|
|
1207
|
+
# Date.new(2001).leap? # => false
|
|
978
1208
|
#
|
|
979
1209
|
def leap?: () -> bool
|
|
980
1210
|
|
|
981
1211
|
# <!--
|
|
982
1212
|
# rdoc-file=ext/date/date_core.c
|
|
983
|
-
# -
|
|
984
|
-
# - d.day -> fixnum
|
|
1213
|
+
# - mday -> integer
|
|
985
1214
|
# -->
|
|
986
|
-
# Returns the day of the month (1
|
|
1215
|
+
# Returns the day of the month in range (1..31):
|
|
987
1216
|
#
|
|
988
|
-
# Date.new(2001,2,3).mday
|
|
1217
|
+
# Date.new(2001, 2, 3).mday # => 3
|
|
1218
|
+
#
|
|
1219
|
+
# Date#day is an alias for Date#mday.
|
|
989
1220
|
#
|
|
990
1221
|
def mday: () -> Integer
|
|
991
1222
|
|
|
@@ -1003,376 +1234,264 @@ class Date
|
|
|
1003
1234
|
|
|
1004
1235
|
# <!--
|
|
1005
1236
|
# rdoc-file=ext/date/date_core.c
|
|
1006
|
-
# -
|
|
1007
|
-
# - d.month -> fixnum
|
|
1237
|
+
# - mon -> integer
|
|
1008
1238
|
# -->
|
|
1009
|
-
# Returns the month (1
|
|
1239
|
+
# Returns the month in range (1..12):
|
|
1240
|
+
#
|
|
1241
|
+
# Date.new(2001, 2, 3).mon # => 2
|
|
1010
1242
|
#
|
|
1011
|
-
#
|
|
1243
|
+
# Date#month is an alias for Date#mon.
|
|
1012
1244
|
#
|
|
1013
1245
|
def mon: () -> Integer
|
|
1014
1246
|
|
|
1015
1247
|
# <!--
|
|
1016
1248
|
# rdoc-file=ext/date/date_core.c
|
|
1017
|
-
# -
|
|
1249
|
+
# - monday? -> true or false
|
|
1018
1250
|
# -->
|
|
1019
|
-
# Returns true if
|
|
1251
|
+
# Returns `true` if `self` is a Monday, `false` otherwise.
|
|
1020
1252
|
#
|
|
1021
1253
|
def monday?: () -> bool
|
|
1022
1254
|
|
|
1023
1255
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
1024
|
-
# Returns the month (1
|
|
1256
|
+
# Returns the month in range (1..12):
|
|
1257
|
+
#
|
|
1258
|
+
# Date.new(2001, 2, 3).mon # => 2
|
|
1025
1259
|
#
|
|
1026
|
-
#
|
|
1260
|
+
# Date#month is an alias for Date#mon.
|
|
1027
1261
|
#
|
|
1028
1262
|
def month: () -> Integer
|
|
1029
1263
|
|
|
1030
1264
|
# <!--
|
|
1031
1265
|
# rdoc-file=ext/date/date_core.c
|
|
1032
|
-
# -
|
|
1266
|
+
# - new_start(start = Date::ITALY]) -> new_date
|
|
1033
1267
|
# -->
|
|
1034
|
-
#
|
|
1268
|
+
# Returns a copy of `self` with the given `start` value:
|
|
1035
1269
|
#
|
|
1036
|
-
#
|
|
1037
|
-
#
|
|
1270
|
+
# d0 = Date.new(2000, 2, 3)
|
|
1271
|
+
# d0.julian? # => false
|
|
1272
|
+
# d1 = d0.new_start(Date::JULIAN)
|
|
1273
|
+
# d1.julian? # => true
|
|
1274
|
+
#
|
|
1275
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
1038
1276
|
#
|
|
1039
1277
|
def new_start: (?Integer start) -> Date
|
|
1040
1278
|
|
|
1041
1279
|
# <!--
|
|
1042
1280
|
# rdoc-file=ext/date/date_core.c
|
|
1043
|
-
# - d.
|
|
1044
|
-
# - d.next -> date
|
|
1281
|
+
# - d.next -> new_date
|
|
1045
1282
|
# -->
|
|
1046
|
-
# Returns a
|
|
1283
|
+
# Returns a new Date object representing the following day:
|
|
1284
|
+
#
|
|
1285
|
+
# d = Date.new(2001, 2, 3)
|
|
1286
|
+
# d.to_s # => "2001-02-03"
|
|
1287
|
+
# d.next.to_s # => "2001-02-04"
|
|
1288
|
+
#
|
|
1289
|
+
# Date#succ is an alias for Date#next.
|
|
1047
1290
|
#
|
|
1048
1291
|
def next: () -> Date
|
|
1049
1292
|
|
|
1050
1293
|
# <!--
|
|
1051
1294
|
# rdoc-file=ext/date/date_core.c
|
|
1052
|
-
# -
|
|
1295
|
+
# - next_day(n = 1) -> new_date
|
|
1053
1296
|
# -->
|
|
1054
|
-
#
|
|
1297
|
+
# Equivalent to Date#+ with argument `n`.
|
|
1055
1298
|
#
|
|
1056
1299
|
def next_day: (?Integer day) -> Date
|
|
1057
1300
|
|
|
1058
1301
|
# <!--
|
|
1059
1302
|
# rdoc-file=ext/date/date_core.c
|
|
1060
|
-
# -
|
|
1303
|
+
# - next_month(n = 1) -> new_date
|
|
1061
1304
|
# -->
|
|
1062
|
-
#
|
|
1063
|
-
#
|
|
1064
|
-
# See Date#>> for examples.
|
|
1305
|
+
# Equivalent to #>> with argument `n`.
|
|
1065
1306
|
#
|
|
1066
1307
|
def next_month: (?Integer month) -> Date
|
|
1067
1308
|
|
|
1068
1309
|
# <!--
|
|
1069
1310
|
# rdoc-file=ext/date/date_core.c
|
|
1070
|
-
# -
|
|
1311
|
+
# - next_year(n = 1) -> new_date
|
|
1071
1312
|
# -->
|
|
1072
|
-
#
|
|
1073
|
-
#
|
|
1074
|
-
# Date.new(2001,2,3).next_year #=> #<Date: 2002-02-03 ...>
|
|
1075
|
-
# Date.new(2008,2,29).next_year #=> #<Date: 2009-02-28 ...>
|
|
1076
|
-
# Date.new(2008,2,29).next_year(4) #=> #<Date: 2012-02-29 ...>
|
|
1077
|
-
#
|
|
1078
|
-
# See also Date#>>.
|
|
1313
|
+
# Equivalent to #>> with argument `n * 12`.
|
|
1079
1314
|
#
|
|
1080
1315
|
def next_year: (?Integer year) -> Date
|
|
1081
1316
|
|
|
1082
1317
|
# <!--
|
|
1083
1318
|
# rdoc-file=ext/date/date_core.c
|
|
1084
|
-
# -
|
|
1319
|
+
# - prev_day(n = 1) -> new_date
|
|
1085
1320
|
# -->
|
|
1086
|
-
#
|
|
1321
|
+
# Equivalent to Date#- with argument `n`.
|
|
1087
1322
|
#
|
|
1088
1323
|
def prev_day: (?Integer day) -> Date
|
|
1089
1324
|
|
|
1090
1325
|
# <!--
|
|
1091
1326
|
# rdoc-file=ext/date/date_core.c
|
|
1092
|
-
# -
|
|
1327
|
+
# - prev_month(n = 1) -> new_date
|
|
1093
1328
|
# -->
|
|
1094
|
-
#
|
|
1095
|
-
#
|
|
1096
|
-
# See Date#<< for examples.
|
|
1329
|
+
# Equivalent to #<< with argument `n`.
|
|
1097
1330
|
#
|
|
1098
1331
|
def prev_month: (?Integer month) -> Date
|
|
1099
1332
|
|
|
1100
1333
|
# <!--
|
|
1101
1334
|
# rdoc-file=ext/date/date_core.c
|
|
1102
|
-
# -
|
|
1335
|
+
# - prev_year(n = 1) -> new_date
|
|
1103
1336
|
# -->
|
|
1104
|
-
#
|
|
1105
|
-
#
|
|
1106
|
-
# Date.new(2001,2,3).prev_year #=> #<Date: 2000-02-03 ...>
|
|
1107
|
-
# Date.new(2008,2,29).prev_year #=> #<Date: 2007-02-28 ...>
|
|
1108
|
-
# Date.new(2008,2,29).prev_year(4) #=> #<Date: 2004-02-29 ...>
|
|
1109
|
-
#
|
|
1110
|
-
# See also Date#<<.
|
|
1337
|
+
# Equivalent to #<< with argument `n * 12`.
|
|
1111
1338
|
#
|
|
1112
1339
|
def prev_year: (?Integer year) -> Date
|
|
1113
1340
|
|
|
1114
1341
|
# <!--
|
|
1115
1342
|
# rdoc-file=ext/date/date_core.c
|
|
1116
|
-
# -
|
|
1117
|
-
# - d.rfc822 -> string
|
|
1343
|
+
# - rfc2822 -> string
|
|
1118
1344
|
# -->
|
|
1119
|
-
#
|
|
1345
|
+
# Equivalent to #strftime with argument `'%a, %-d %b %Y %T %z'`; see [Formats
|
|
1346
|
+
# for Dates and Times](rdoc-ref:strftime_formatting.rdoc):
|
|
1347
|
+
#
|
|
1348
|
+
# Date.new(2001, 2, 3).rfc2822 # => "Sat, 3 Feb 2001 00:00:00 +0000"
|
|
1349
|
+
#
|
|
1350
|
+
# Date#rfc822 is an alias for Date#rfc2822.
|
|
1120
1351
|
#
|
|
1121
1352
|
def rfc2822: () -> String
|
|
1122
1353
|
|
|
1123
1354
|
# <!--
|
|
1124
1355
|
# rdoc-file=ext/date/date_core.c
|
|
1125
|
-
# -
|
|
1356
|
+
# - rfc3339 -> string
|
|
1126
1357
|
# -->
|
|
1127
|
-
#
|
|
1358
|
+
# Equivalent to #strftime with argument `'%FT%T%:z'`; see [Formats for Dates and
|
|
1359
|
+
# Times](rdoc-ref:strftime_formatting.rdoc):
|
|
1360
|
+
#
|
|
1361
|
+
# Date.new(2001, 2, 3).rfc3339 # => "2001-02-03T00:00:00+00:00"
|
|
1128
1362
|
#
|
|
1129
1363
|
def rfc3339: () -> String
|
|
1130
1364
|
|
|
1131
1365
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
1132
|
-
#
|
|
1133
|
-
# RFC 2822
|
|
1366
|
+
# Returns a new Date object with values parsed from `string`, which should be a
|
|
1367
|
+
# valid [RFC 2822 date
|
|
1368
|
+
# format](rdoc-ref:strftime_formatting.rdoc@RFC+2822+Format):
|
|
1369
|
+
#
|
|
1370
|
+
# d = Date.new(2001, 2, 3)
|
|
1371
|
+
# s = d.rfc2822 # => "Sat, 3 Feb 2001 00:00:00 +0000"
|
|
1372
|
+
# Date.rfc2822(s) # => #<Date: 2001-02-03>
|
|
1373
|
+
#
|
|
1374
|
+
# See:
|
|
1134
1375
|
#
|
|
1135
|
-
#
|
|
1136
|
-
#
|
|
1376
|
+
# * Argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
1377
|
+
# * Argument [limit](rdoc-ref:Date@Argument+limit).
|
|
1137
1378
|
#
|
|
1138
|
-
#
|
|
1139
|
-
#
|
|
1140
|
-
#
|
|
1379
|
+
#
|
|
1380
|
+
# Date.rfc822 is an alias for Date.rfc2822.
|
|
1381
|
+
#
|
|
1382
|
+
# Related: Date._rfc2822 (returns a hash).
|
|
1141
1383
|
#
|
|
1142
1384
|
def rfc822: () -> String
|
|
1143
1385
|
|
|
1144
1386
|
# <!--
|
|
1145
1387
|
# rdoc-file=ext/date/date_core.c
|
|
1146
|
-
# -
|
|
1388
|
+
# - saturday? -> true or false
|
|
1147
1389
|
# -->
|
|
1148
|
-
# Returns true if
|
|
1390
|
+
# Returns `true` if `self` is a Saturday, `false` otherwise.
|
|
1149
1391
|
#
|
|
1150
1392
|
def saturday?: () -> bool
|
|
1151
1393
|
|
|
1152
1394
|
# <!--
|
|
1153
1395
|
# rdoc-file=ext/date/date_core.c
|
|
1154
|
-
# -
|
|
1396
|
+
# - start -> float
|
|
1155
1397
|
# -->
|
|
1156
|
-
# Returns the Julian
|
|
1398
|
+
# Returns the Julian start date for calendar reform; if not an infinity, the
|
|
1399
|
+
# returned value is suitable for passing to Date#jd:
|
|
1400
|
+
#
|
|
1401
|
+
# d = Date.new(2001, 2, 3, Date::ITALY)
|
|
1402
|
+
# s = d.start # => 2299161.0
|
|
1403
|
+
# Date.jd(s).to_s # => "1582-10-15"
|
|
1157
1404
|
#
|
|
1158
|
-
# Date.new(2001,2,3)
|
|
1159
|
-
#
|
|
1405
|
+
# d = Date.new(2001, 2, 3, Date::ENGLAND)
|
|
1406
|
+
# s = d.start # => 2361222.0
|
|
1407
|
+
# Date.jd(s).to_s # => "1752-09-14"
|
|
1408
|
+
#
|
|
1409
|
+
# Date.new(2001, 2, 3, Date::GREGORIAN).start # => -Infinity
|
|
1410
|
+
# Date.new(2001, 2, 3, Date::JULIAN).start # => Infinity
|
|
1411
|
+
#
|
|
1412
|
+
# See argument [start](rdoc-ref:calendars.rdoc@Argument+start).
|
|
1160
1413
|
#
|
|
1161
1414
|
def start: () -> Float
|
|
1162
1415
|
|
|
1163
1416
|
# <!--
|
|
1164
1417
|
# rdoc-file=ext/date/date_core.c
|
|
1165
|
-
# -
|
|
1166
|
-
# - d.step(limit[, step=1]){|date| ...} -> self
|
|
1418
|
+
# - step(limit, step = 1){|date| ... } -> self
|
|
1167
1419
|
# -->
|
|
1168
|
-
#
|
|
1169
|
-
#
|
|
1420
|
+
# Calls the block with specified dates; returns `self`.
|
|
1421
|
+
#
|
|
1422
|
+
# * The first `date` is `self`.
|
|
1423
|
+
# * Each successive `date` is `date + step`, where `step` is the numeric step
|
|
1424
|
+
# size in days.
|
|
1425
|
+
# * The last date is the last one that is before or equal to `limit`, which
|
|
1426
|
+
# should be a Date object.
|
|
1427
|
+
#
|
|
1428
|
+
#
|
|
1429
|
+
# Example:
|
|
1430
|
+
#
|
|
1431
|
+
# limit = Date.new(2001, 12, 31)
|
|
1432
|
+
# Date.new(2001).step(limit){|date| p date.to_s if date.mday == 31 }
|
|
1170
1433
|
#
|
|
1171
|
-
#
|
|
1172
|
-
#
|
|
1434
|
+
# Output:
|
|
1435
|
+
#
|
|
1436
|
+
# "2001-01-31"
|
|
1437
|
+
# "2001-03-31"
|
|
1438
|
+
# "2001-05-31"
|
|
1439
|
+
# "2001-07-31"
|
|
1440
|
+
# "2001-08-31"
|
|
1441
|
+
# "2001-10-31"
|
|
1442
|
+
# "2001-12-31"
|
|
1443
|
+
#
|
|
1444
|
+
# Returns an Enumerator if no block is given.
|
|
1173
1445
|
#
|
|
1174
1446
|
def step: (Date limit, ?Integer step) { (Date) -> untyped } -> Date
|
|
1175
1447
|
| (Date limit, ?Integer step) -> ::Enumerator[Date, Date]
|
|
1176
1448
|
|
|
1177
1449
|
# <!--
|
|
1178
1450
|
# rdoc-file=ext/date/date_core.c
|
|
1179
|
-
# -
|
|
1180
|
-
# -->
|
|
1181
|
-
#
|
|
1182
|
-
#
|
|
1183
|
-
#
|
|
1184
|
-
#
|
|
1185
|
-
#
|
|
1186
|
-
#
|
|
1187
|
-
#
|
|
1188
|
-
#
|
|
1189
|
-
# %<flags><width><modifier><conversion>
|
|
1190
|
-
#
|
|
1191
|
-
# Flags:
|
|
1192
|
-
# - don't pad a numerical output.
|
|
1193
|
-
# _ use spaces for padding.
|
|
1194
|
-
# 0 use zeros for padding.
|
|
1195
|
-
# ^ upcase the result string.
|
|
1196
|
-
# # change case.
|
|
1197
|
-
#
|
|
1198
|
-
# The minimum field width specifies the minimum width.
|
|
1199
|
-
#
|
|
1200
|
-
# The modifiers are "E", "O", ":", "::" and ":::". "E" and "O" are ignored. No
|
|
1201
|
-
# effect to result currently.
|
|
1202
|
-
#
|
|
1203
|
-
# Format directives:
|
|
1204
|
-
#
|
|
1205
|
-
# Date (Year, Month, Day):
|
|
1206
|
-
# %Y - Year with century (can be negative, 4 digits at least)
|
|
1207
|
-
# -0001, 0000, 1995, 2009, 14292, etc.
|
|
1208
|
-
# %C - year / 100 (round down. 20 in 2009)
|
|
1209
|
-
# %y - year % 100 (00..99)
|
|
1210
|
-
#
|
|
1211
|
-
# %m - Month of the year, zero-padded (01..12)
|
|
1212
|
-
# %_m blank-padded ( 1..12)
|
|
1213
|
-
# %-m no-padded (1..12)
|
|
1214
|
-
# %B - The full month name (``January'')
|
|
1215
|
-
# %^B uppercased (``JANUARY'')
|
|
1216
|
-
# %b - The abbreviated month name (``Jan'')
|
|
1217
|
-
# %^b uppercased (``JAN'')
|
|
1218
|
-
# %h - Equivalent to %b
|
|
1219
|
-
#
|
|
1220
|
-
# %d - Day of the month, zero-padded (01..31)
|
|
1221
|
-
# %-d no-padded (1..31)
|
|
1222
|
-
# %e - Day of the month, blank-padded ( 1..31)
|
|
1223
|
-
#
|
|
1224
|
-
# %j - Day of the year (001..366)
|
|
1225
|
-
#
|
|
1226
|
-
# Time (Hour, Minute, Second, Subsecond):
|
|
1227
|
-
# %H - Hour of the day, 24-hour clock, zero-padded (00..23)
|
|
1228
|
-
# %k - Hour of the day, 24-hour clock, blank-padded ( 0..23)
|
|
1229
|
-
# %I - Hour of the day, 12-hour clock, zero-padded (01..12)
|
|
1230
|
-
# %l - Hour of the day, 12-hour clock, blank-padded ( 1..12)
|
|
1231
|
-
# %P - Meridian indicator, lowercase (``am'' or ``pm'')
|
|
1232
|
-
# %p - Meridian indicator, uppercase (``AM'' or ``PM'')
|
|
1233
|
-
#
|
|
1234
|
-
# %M - Minute of the hour (00..59)
|
|
1235
|
-
#
|
|
1236
|
-
# %S - Second of the minute (00..60)
|
|
1237
|
-
#
|
|
1238
|
-
# %L - Millisecond of the second (000..999)
|
|
1239
|
-
# %N - Fractional seconds digits, default is 9 digits (nanosecond)
|
|
1240
|
-
# %3N millisecond (3 digits) %15N femtosecond (15 digits)
|
|
1241
|
-
# %6N microsecond (6 digits) %18N attosecond (18 digits)
|
|
1242
|
-
# %9N nanosecond (9 digits) %21N zeptosecond (21 digits)
|
|
1243
|
-
# %12N picosecond (12 digits) %24N yoctosecond (24 digits)
|
|
1244
|
-
#
|
|
1245
|
-
# Time zone:
|
|
1246
|
-
# %z - Time zone as hour and minute offset from UTC (e.g. +0900)
|
|
1247
|
-
# %:z - hour and minute offset from UTC with a colon (e.g. +09:00)
|
|
1248
|
-
# %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
|
|
1249
|
-
# %:::z - hour, minute and second offset from UTC
|
|
1250
|
-
# (e.g. +09, +09:30, +09:30:30)
|
|
1251
|
-
# %Z - Equivalent to %:z (e.g. +09:00)
|
|
1252
|
-
#
|
|
1253
|
-
# Weekday:
|
|
1254
|
-
# %A - The full weekday name (``Sunday'')
|
|
1255
|
-
# %^A uppercased (``SUNDAY'')
|
|
1256
|
-
# %a - The abbreviated name (``Sun'')
|
|
1257
|
-
# %^a uppercased (``SUN'')
|
|
1258
|
-
# %u - Day of the week (Monday is 1, 1..7)
|
|
1259
|
-
# %w - Day of the week (Sunday is 0, 0..6)
|
|
1260
|
-
#
|
|
1261
|
-
# ISO 8601 week-based year and week number:
|
|
1262
|
-
# The week 1 of YYYY starts with a Monday and includes YYYY-01-04.
|
|
1263
|
-
# The days in the year before the first week are in the last week of
|
|
1264
|
-
# the previous year.
|
|
1265
|
-
# %G - The week-based year
|
|
1266
|
-
# %g - The last 2 digits of the week-based year (00..99)
|
|
1267
|
-
# %V - Week number of the week-based year (01..53)
|
|
1268
|
-
#
|
|
1269
|
-
# Week number:
|
|
1270
|
-
# The week 1 of YYYY starts with a Sunday or Monday (according to %U
|
|
1271
|
-
# or %W). The days in the year before the first week are in week 0.
|
|
1272
|
-
# %U - Week number of the year. The week starts with Sunday. (00..53)
|
|
1273
|
-
# %W - Week number of the year. The week starts with Monday. (00..53)
|
|
1274
|
-
#
|
|
1275
|
-
# Seconds since the Unix Epoch:
|
|
1276
|
-
# %s - Number of seconds since 1970-01-01 00:00:00 UTC.
|
|
1277
|
-
# %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC.
|
|
1278
|
-
#
|
|
1279
|
-
# Literal string:
|
|
1280
|
-
# %n - Newline character (\n)
|
|
1281
|
-
# %t - Tab character (\t)
|
|
1282
|
-
# %% - Literal ``%'' character
|
|
1283
|
-
#
|
|
1284
|
-
# Combination:
|
|
1285
|
-
# %c - date and time (%a %b %e %T %Y)
|
|
1286
|
-
# %D - Date (%m/%d/%y)
|
|
1287
|
-
# %F - The ISO 8601 date format (%Y-%m-%d)
|
|
1288
|
-
# %v - VMS date (%e-%^b-%Y)
|
|
1289
|
-
# %x - Same as %D
|
|
1290
|
-
# %X - Same as %T
|
|
1291
|
-
# %r - 12-hour time (%I:%M:%S %p)
|
|
1292
|
-
# %R - 24-hour time (%H:%M)
|
|
1293
|
-
# %T - 24-hour time (%H:%M:%S)
|
|
1294
|
-
# %+ - date(1) (%a %b %e %H:%M:%S %Z %Y)
|
|
1295
|
-
#
|
|
1296
|
-
# This method is similar to the strftime() function defined in ISO C and POSIX.
|
|
1297
|
-
# Several directives (%a, %A, %b, %B, %c, %p, %r, %x, %X, %E*, %O* and %Z) are
|
|
1298
|
-
# locale dependent in the function. However, this method is locale independent.
|
|
1299
|
-
# So, the result may differ even if the same format string is used in other
|
|
1300
|
-
# systems such as C. It is good practice to avoid %x and %X because there are
|
|
1301
|
-
# corresponding locale independent representations, %D and %T.
|
|
1302
|
-
#
|
|
1303
|
-
# Examples:
|
|
1304
|
-
#
|
|
1305
|
-
# d = DateTime.new(2007,11,19,8,37,48,"-06:00")
|
|
1306
|
-
# #=> #<DateTime: 2007-11-19T08:37:48-0600 ...>
|
|
1307
|
-
# d.strftime("Printed on %m/%d/%Y") #=> "Printed on 11/19/2007"
|
|
1308
|
-
# d.strftime("at %I:%M%p") #=> "at 08:37AM"
|
|
1309
|
-
#
|
|
1310
|
-
# Various ISO 8601 formats:
|
|
1311
|
-
# %Y%m%d => 20071119 Calendar date (basic)
|
|
1312
|
-
# %F => 2007-11-19 Calendar date (extended)
|
|
1313
|
-
# %Y-%m => 2007-11 Calendar date, reduced accuracy, specific month
|
|
1314
|
-
# %Y => 2007 Calendar date, reduced accuracy, specific year
|
|
1315
|
-
# %C => 20 Calendar date, reduced accuracy, specific century
|
|
1316
|
-
# %Y%j => 2007323 Ordinal date (basic)
|
|
1317
|
-
# %Y-%j => 2007-323 Ordinal date (extended)
|
|
1318
|
-
# %GW%V%u => 2007W471 Week date (basic)
|
|
1319
|
-
# %G-W%V-%u => 2007-W47-1 Week date (extended)
|
|
1320
|
-
# %GW%V => 2007W47 Week date, reduced accuracy, specific week (basic)
|
|
1321
|
-
# %G-W%V => 2007-W47 Week date, reduced accuracy, specific week (extended)
|
|
1322
|
-
# %H%M%S => 083748 Local time (basic)
|
|
1323
|
-
# %T => 08:37:48 Local time (extended)
|
|
1324
|
-
# %H%M => 0837 Local time, reduced accuracy, specific minute (basic)
|
|
1325
|
-
# %H:%M => 08:37 Local time, reduced accuracy, specific minute (extended)
|
|
1326
|
-
# %H => 08 Local time, reduced accuracy, specific hour
|
|
1327
|
-
# %H%M%S,%L => 083748,000 Local time with decimal fraction, comma as decimal sign (basic)
|
|
1328
|
-
# %T,%L => 08:37:48,000 Local time with decimal fraction, comma as decimal sign (extended)
|
|
1329
|
-
# %H%M%S.%L => 083748.000 Local time with decimal fraction, full stop as decimal sign (basic)
|
|
1330
|
-
# %T.%L => 08:37:48.000 Local time with decimal fraction, full stop as decimal sign (extended)
|
|
1331
|
-
# %H%M%S%z => 083748-0600 Local time and the difference from UTC (basic)
|
|
1332
|
-
# %T%:z => 08:37:48-06:00 Local time and the difference from UTC (extended)
|
|
1333
|
-
# %Y%m%dT%H%M%S%z => 20071119T083748-0600 Date and time of day for calendar date (basic)
|
|
1334
|
-
# %FT%T%:z => 2007-11-19T08:37:48-06:00 Date and time of day for calendar date (extended)
|
|
1335
|
-
# %Y%jT%H%M%S%z => 2007323T083748-0600 Date and time of day for ordinal date (basic)
|
|
1336
|
-
# %Y-%jT%T%:z => 2007-323T08:37:48-06:00 Date and time of day for ordinal date (extended)
|
|
1337
|
-
# %GW%V%uT%H%M%S%z => 2007W471T083748-0600 Date and time of day for week date (basic)
|
|
1338
|
-
# %G-W%V-%uT%T%:z => 2007-W47-1T08:37:48-06:00 Date and time of day for week date (extended)
|
|
1339
|
-
# %Y%m%dT%H%M => 20071119T0837 Calendar date and local time (basic)
|
|
1340
|
-
# %FT%R => 2007-11-19T08:37 Calendar date and local time (extended)
|
|
1341
|
-
# %Y%jT%H%MZ => 2007323T0837Z Ordinal date and UTC of day (basic)
|
|
1342
|
-
# %Y-%jT%RZ => 2007-323T08:37Z Ordinal date and UTC of day (extended)
|
|
1343
|
-
# %GW%V%uT%H%M%z => 2007W471T0837-0600 Week date and local time and difference from UTC (basic)
|
|
1344
|
-
# %G-W%V-%uT%R%:z => 2007-W47-1T08:37-06:00 Week date and local time and difference from UTC (extended)
|
|
1345
|
-
#
|
|
1346
|
-
# See also strftime(3) and ::strptime.
|
|
1451
|
+
# - strftime(format = '%F') -> string
|
|
1452
|
+
# -->
|
|
1453
|
+
# Returns a string representation of the date in `self`, formatted according the
|
|
1454
|
+
# given `format`:
|
|
1455
|
+
#
|
|
1456
|
+
# Date.new(2001, 2, 3).strftime # => "2001-02-03"
|
|
1457
|
+
#
|
|
1458
|
+
# For other formats, see [Formats for Dates and
|
|
1459
|
+
# Times](rdoc-ref:strftime_formatting.rdoc).
|
|
1347
1460
|
#
|
|
1348
1461
|
def strftime: (?String format) -> String
|
|
1349
1462
|
|
|
1350
1463
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
1351
|
-
# Returns a
|
|
1464
|
+
# Returns a new Date object representing the following day:
|
|
1465
|
+
#
|
|
1466
|
+
# d = Date.new(2001, 2, 3)
|
|
1467
|
+
# d.to_s # => "2001-02-03"
|
|
1468
|
+
# d.next.to_s # => "2001-02-04"
|
|
1469
|
+
#
|
|
1470
|
+
# Date#succ is an alias for Date#next.
|
|
1352
1471
|
#
|
|
1353
1472
|
def succ: () -> Date
|
|
1354
1473
|
|
|
1355
1474
|
# <!--
|
|
1356
1475
|
# rdoc-file=ext/date/date_core.c
|
|
1357
|
-
# -
|
|
1476
|
+
# - sunday? -> true or false
|
|
1358
1477
|
# -->
|
|
1359
|
-
# Returns true if
|
|
1478
|
+
# Returns `true` if `self` is a Sunday, `false` otherwise.
|
|
1360
1479
|
#
|
|
1361
1480
|
def sunday?: () -> bool
|
|
1362
1481
|
|
|
1363
1482
|
# <!--
|
|
1364
1483
|
# rdoc-file=ext/date/date_core.c
|
|
1365
|
-
# -
|
|
1484
|
+
# - thursday? -> true or false
|
|
1366
1485
|
# -->
|
|
1367
|
-
# Returns true if
|
|
1486
|
+
# Returns `true` if `self` is a Thursday, `false` otherwise.
|
|
1368
1487
|
#
|
|
1369
1488
|
def thursday?: () -> bool
|
|
1370
1489
|
|
|
1371
1490
|
# <!--
|
|
1372
1491
|
# rdoc-file=ext/date/date_core.c
|
|
1373
|
-
# -
|
|
1492
|
+
# - to_date -> self
|
|
1374
1493
|
# -->
|
|
1375
|
-
# Returns self
|
|
1494
|
+
# Returns `self`.
|
|
1376
1495
|
#
|
|
1377
1496
|
def to_date: () -> Date
|
|
1378
1497
|
|
|
@@ -1380,89 +1499,100 @@ class Date
|
|
|
1380
1499
|
# rdoc-file=ext/date/date_core.c
|
|
1381
1500
|
# - d.to_datetime -> datetime
|
|
1382
1501
|
# -->
|
|
1383
|
-
# Returns a DateTime
|
|
1502
|
+
# Returns a DateTime whose value is the same as `self`:
|
|
1503
|
+
#
|
|
1504
|
+
# Date.new(2001, 2, 3).to_datetime # => #<DateTime: 2001-02-03T00:00:00+00:00>
|
|
1384
1505
|
#
|
|
1385
1506
|
def to_datetime: () -> DateTime
|
|
1386
1507
|
|
|
1387
1508
|
# <!--
|
|
1388
1509
|
# rdoc-file=ext/date/date_core.c
|
|
1389
|
-
# -
|
|
1510
|
+
# - to_s -> string
|
|
1390
1511
|
# -->
|
|
1391
|
-
# Returns a string
|
|
1392
|
-
#
|
|
1512
|
+
# Returns a string representation of the date in `self` in [ISO 8601 extended
|
|
1513
|
+
# date format](rdoc-ref:strftime_formatting.rdoc@ISO+8601+Format+Specifications)
|
|
1514
|
+
# (`'%Y-%m-%d'`):
|
|
1393
1515
|
#
|
|
1394
|
-
# Date.new(2001,2,3).to_s
|
|
1516
|
+
# Date.new(2001, 2, 3).to_s # => "2001-02-03"
|
|
1395
1517
|
#
|
|
1396
1518
|
def to_s: () -> String
|
|
1397
1519
|
|
|
1398
1520
|
# <!--
|
|
1399
1521
|
# rdoc-file=ext/date/date_core.c
|
|
1400
|
-
# -
|
|
1522
|
+
# - to_time -> time
|
|
1401
1523
|
# -->
|
|
1402
|
-
# Returns a Time object
|
|
1403
|
-
#
|
|
1524
|
+
# Returns a new Time object with the same value as `self`; if `self` is a Julian
|
|
1525
|
+
# date, derives its Gregorian date for conversion to the Time object:
|
|
1526
|
+
#
|
|
1527
|
+
# Date.new(2001, 2, 3).to_time # => 2001-02-03 00:00:00 -0600
|
|
1528
|
+
# Date.new(2001, 2, 3, Date::JULIAN).to_time # => 2001-02-16 00:00:00 -0600
|
|
1404
1529
|
#
|
|
1405
1530
|
def to_time: () -> Time
|
|
1406
1531
|
|
|
1407
1532
|
# <!--
|
|
1408
1533
|
# rdoc-file=ext/date/date_core.c
|
|
1409
|
-
# -
|
|
1534
|
+
# - tuesday? -> true or false
|
|
1410
1535
|
# -->
|
|
1411
|
-
# Returns true if
|
|
1536
|
+
# Returns `true` if `self` is a Tuesday, `false` otherwise.
|
|
1412
1537
|
#
|
|
1413
1538
|
def tuesday?: () -> bool
|
|
1414
1539
|
|
|
1415
1540
|
# <!--
|
|
1416
1541
|
# rdoc-file=ext/date/date_core.c
|
|
1417
|
-
# -
|
|
1418
|
-
# - d.upto(max){|date| ...} -> self
|
|
1542
|
+
# - upto(max){|date| ... } -> self
|
|
1419
1543
|
# -->
|
|
1420
|
-
#
|
|
1544
|
+
# Equivalent to #step with arguments `max` and `1`.
|
|
1421
1545
|
#
|
|
1422
1546
|
def upto: (Date max) { (Date) -> untyped } -> Date
|
|
1423
1547
|
| (Date max) -> ::Enumerator[Date, Date]
|
|
1424
1548
|
|
|
1425
1549
|
# <!--
|
|
1426
1550
|
# rdoc-file=ext/date/date_core.c
|
|
1427
|
-
# -
|
|
1551
|
+
# - wday -> integer
|
|
1428
1552
|
# -->
|
|
1429
|
-
# Returns the day of week (0
|
|
1553
|
+
# Returns the day of week in range (0..6); Sunday is 0:
|
|
1430
1554
|
#
|
|
1431
|
-
# Date.new(2001,2,3).wday
|
|
1555
|
+
# Date.new(2001, 2, 3).wday # => 6
|
|
1432
1556
|
#
|
|
1433
1557
|
def wday: () -> Integer
|
|
1434
1558
|
|
|
1435
1559
|
# <!--
|
|
1436
1560
|
# rdoc-file=ext/date/date_core.c
|
|
1437
|
-
# -
|
|
1561
|
+
# - wednesday? -> true or false
|
|
1438
1562
|
# -->
|
|
1439
|
-
# Returns true if
|
|
1563
|
+
# Returns `true` if `self` is a Wednesday, `false` otherwise.
|
|
1440
1564
|
#
|
|
1441
1565
|
def wednesday?: () -> bool
|
|
1442
1566
|
|
|
1443
1567
|
# <!-- rdoc-file=ext/date/date_core.c -->
|
|
1444
|
-
#
|
|
1568
|
+
# Equivalent to #strftime with argument `'%Y-%m-%d'` (or its [shorthand
|
|
1569
|
+
# form](rdoc-ref:strftime_formatting.rdoc@Shorthand+Conversion+Specifiers)
|
|
1570
|
+
# `'%F'`);
|
|
1571
|
+
#
|
|
1572
|
+
# Date.new(2001, 2, 3).iso8601 # => "2001-02-03"
|
|
1573
|
+
#
|
|
1574
|
+
# Date#xmlschema is an alias for Date#iso8601.
|
|
1445
1575
|
#
|
|
1446
1576
|
def xmlschema: () -> String
|
|
1447
1577
|
|
|
1448
1578
|
# <!--
|
|
1449
1579
|
# rdoc-file=ext/date/date_core.c
|
|
1450
|
-
# -
|
|
1580
|
+
# - yday -> integer
|
|
1451
1581
|
# -->
|
|
1452
|
-
# Returns the day of the year (1
|
|
1582
|
+
# Returns the day of the year, in range (1..366):
|
|
1453
1583
|
#
|
|
1454
|
-
# Date.new(2001,2,3).yday
|
|
1584
|
+
# Date.new(2001, 2, 3).yday # => 34
|
|
1455
1585
|
#
|
|
1456
1586
|
def yday: () -> Integer
|
|
1457
1587
|
|
|
1458
1588
|
# <!--
|
|
1459
1589
|
# rdoc-file=ext/date/date_core.c
|
|
1460
|
-
# -
|
|
1590
|
+
# - year -> integer
|
|
1461
1591
|
# -->
|
|
1462
|
-
# Returns the year
|
|
1592
|
+
# Returns the year:
|
|
1463
1593
|
#
|
|
1464
|
-
# Date.new(2001,2,3).year
|
|
1465
|
-
# (Date.new(1,1,1) - 1).year
|
|
1594
|
+
# Date.new(2001, 2, 3).year # => 2001
|
|
1595
|
+
# (Date.new(1, 1, 1) - 1).year # => 0
|
|
1466
1596
|
#
|
|
1467
1597
|
def year: () -> Integer
|
|
1468
1598
|
end
|