Backport date-2.0.3 for Reiwa Support [Backport #18514]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_6@67956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
560a4cdf04
commit
fa7f75ddda
@ -4755,6 +4755,10 @@ date_s__jisx0301(int argc, VALUE *argv, VALUE klass)
|
|||||||
*
|
*
|
||||||
* Date.jisx0301('H13.02.03') #=> #<Date: 2001-02-03 ...>
|
* Date.jisx0301('H13.02.03') #=> #<Date: 2001-02-03 ...>
|
||||||
*
|
*
|
||||||
|
* For no-era year, legacy format, Heisei is assumed.
|
||||||
|
*
|
||||||
|
* Date.jisx0301('13.02.03') #=> #<Date: 2001-02-03 ...>
|
||||||
|
*
|
||||||
* Raise an ArgumentError when the string length is longer than _limit_.
|
* Raise an ArgumentError when the string length is longer than _limit_.
|
||||||
* You can stop this check by passing `limit: nil`, but note that
|
* You can stop this check by passing `limit: nil`, but note that
|
||||||
* it may take a long time to parse.
|
* it may take a long time to parse.
|
||||||
@ -7190,10 +7194,14 @@ jisx0301_date_format(char *fmt, size_t size, VALUE jd, VALUE y)
|
|||||||
c = 'S';
|
c = 'S';
|
||||||
s = 1925;
|
s = 1925;
|
||||||
}
|
}
|
||||||
else {
|
else if (d < 2458605) {
|
||||||
c = 'H';
|
c = 'H';
|
||||||
s = 1988;
|
s = 1988;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
c = 'R';
|
||||||
|
s = 2018;
|
||||||
|
}
|
||||||
snprintf(fmt, size, "%c%02ld" ".%%m.%%d", c, FIX2INT(y) - s);
|
snprintf(fmt, size, "%c%02ld" ".%%m.%%d", c, FIX2INT(y) - s);
|
||||||
return fmt;
|
return fmt;
|
||||||
}
|
}
|
||||||
@ -8358,6 +8366,11 @@ datetime_s_httpdate(int argc, VALUE *argv, VALUE klass)
|
|||||||
* DateTime.jisx0301('H13.02.03T04:05:06+07:00')
|
* DateTime.jisx0301('H13.02.03T04:05:06+07:00')
|
||||||
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
|
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
|
||||||
*
|
*
|
||||||
|
* For no-era year, legacy format, Heisei is assumed.
|
||||||
|
*
|
||||||
|
* DateTime.jisx0301('13.02.03T04:05:06+07:00')
|
||||||
|
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
|
||||||
|
*
|
||||||
* Raise an ArgumentError when the string length is longer than _limit_.
|
* Raise an ArgumentError when the string length is longer than _limit_.
|
||||||
* You can stop this check by passing `limit: nil`, but note that
|
* You can stop this check by passing `limit: nil`, but note that
|
||||||
* it may take a long time to parse.
|
* it may take a long time to parse.
|
||||||
|
@ -1212,6 +1212,9 @@ parse_iso2(VALUE str, VALUE hash)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define JISX0301_ERA_INITIALS "mtshr"
|
||||||
|
#define JISX0301_DEFAULT_ERA 'H' /* obsolete */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
gengo(int c)
|
gengo(int c)
|
||||||
{
|
{
|
||||||
@ -1222,6 +1225,7 @@ gengo(int c)
|
|||||||
case 'T': case 't': e = 1911; break;
|
case 'T': case 't': e = 1911; break;
|
||||||
case 'S': case 's': e = 1925; break;
|
case 'S': case 's': e = 1925; break;
|
||||||
case 'H': case 'h': e = 1988; break;
|
case 'H': case 'h': e = 1988; break;
|
||||||
|
case 'R': case 'r': e = 2018; break;
|
||||||
default: e = 0; break;
|
default: e = 0; break;
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
@ -1252,11 +1256,11 @@ parse_jis(VALUE str, VALUE hash)
|
|||||||
{
|
{
|
||||||
static const char pat_source[] =
|
static const char pat_source[] =
|
||||||
#ifndef TIGHT_PARSER
|
#ifndef TIGHT_PARSER
|
||||||
"\\b([mtsh])(\\d+)\\.(\\d+)\\.(\\d+)"
|
"\\b([" JISX0301_ERA_INITIALS "])(\\d+)\\.(\\d+)\\.(\\d+)"
|
||||||
#else
|
#else
|
||||||
BOS
|
BOS
|
||||||
FPW_COM FPT_COM
|
FPW_COM FPT_COM
|
||||||
"([mtsh])(\\d+)\\.(\\d+)\\.(\\d+)"
|
"([" JISX0301_ERA_INITIALS "])(\\d+)\\.(\\d+)\\.(\\d+)"
|
||||||
TEE_FPT COM_FPW
|
TEE_FPT COM_FPW
|
||||||
EOS
|
EOS
|
||||||
#endif
|
#endif
|
||||||
@ -2954,7 +2958,7 @@ jisx0301_cb(VALUE m, VALUE hash)
|
|||||||
s[i] = rb_reg_nth_match(i, m);
|
s[i] = rb_reg_nth_match(i, m);
|
||||||
}
|
}
|
||||||
|
|
||||||
ep = gengo(NIL_P(s[1]) ? 'h' : *RSTRING_PTR(s[1]));
|
ep = gengo(NIL_P(s[1]) ? JISX0301_DEFAULT_ERA : *RSTRING_PTR(s[1]));
|
||||||
set_hash("year", f_add(str2num(s[2]), INT2FIX(ep)));
|
set_hash("year", f_add(str2num(s[2]), INT2FIX(ep)));
|
||||||
set_hash("mon", str2num(s[3]));
|
set_hash("mon", str2num(s[3]));
|
||||||
set_hash("mday", str2num(s[4]));
|
set_hash("mday", str2num(s[4]));
|
||||||
@ -2979,7 +2983,7 @@ static int
|
|||||||
jisx0301(VALUE str, VALUE hash)
|
jisx0301(VALUE str, VALUE hash)
|
||||||
{
|
{
|
||||||
static const char pat_source[] =
|
static const char pat_source[] =
|
||||||
"\\A\\s*([mtsh])?(\\d{2})\\.(\\d{2})\\.(\\d{2})"
|
"\\A\\s*([" JISX0301_ERA_INITIALS "])?(\\d{2})\\.(\\d{2})\\.(\\d{2})"
|
||||||
"(?:t"
|
"(?:t"
|
||||||
"(?:(\\d{2}):(\\d{2})(?::(\\d{2})(?:[,.](\\d*))?)?"
|
"(?:(\\d{2}):(\\d{2})(?::(\\d{2})(?:[,.](\\d*))?)?"
|
||||||
"(z|[-+]\\d{2}(?::?\\d{2})?)?)?)?\\s*\\z";
|
"(z|[-+]\\d{2}(?::?\\d{2})?)?)?)?\\s*\\z";
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
require 'date_core'
|
require 'date_core'
|
||||||
|
|
||||||
class Date
|
class Date
|
||||||
VERSION = '2.0.2' # :nodoc:
|
VERSION = '2.0.3' # :nodoc:
|
||||||
|
|
||||||
class Infinity < Numeric # :nodoc:
|
class Infinity < Numeric # :nodoc:
|
||||||
|
|
||||||
|
@ -1020,6 +1020,15 @@ class TestDateParse < Test::Unit::TestCase
|
|||||||
h = Date._jisx0301('S63.02.03')
|
h = Date._jisx0301('S63.02.03')
|
||||||
assert_equal([1988, 2, 3, nil, nil, nil, nil],
|
assert_equal([1988, 2, 3, nil, nil, nil, nil],
|
||||||
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.04.30')
|
||||||
|
assert_equal([2019, 4, 30, nil, nil, nil, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.05.01')
|
||||||
|
assert_equal([2019, 5, 1, nil, nil, nil, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('R01.05.01')
|
||||||
|
assert_equal([2019, 5, 1, nil, nil, nil, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
|
||||||
h = Date._jisx0301('H13.02.03T04:05:06')
|
h = Date._jisx0301('H13.02.03T04:05:06')
|
||||||
assert_equal([2001, 2, 3, 4, 5, 6, nil],
|
assert_equal([2001, 2, 3, 4, 5, 6, nil],
|
||||||
@ -1034,6 +1043,45 @@ class TestDateParse < Test::Unit::TestCase
|
|||||||
assert_equal([2001, 2, 3, 4, 5, 6, 3600],
|
assert_equal([2001, 2, 3, 4, 5, 6, 3600],
|
||||||
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
|
||||||
|
h = Date._jisx0301('H31.04.30T04:05:06')
|
||||||
|
assert_equal([2019, 4, 30, 4, 5, 6, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.04.30T04:05:06,07')
|
||||||
|
assert_equal([2019, 4, 30, 4, 5, 6, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.04.30T04:05:06Z')
|
||||||
|
assert_equal([2019, 4, 30, 4, 5, 6, 0],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.04.30T04:05:06.07+0100')
|
||||||
|
assert_equal([2019, 4, 30, 4, 5, 6, 3600],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
|
||||||
|
h = Date._jisx0301('H31.05.01T04:05:06')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.05.01T04:05:06,07')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.05.01T04:05:06Z')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, 0],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('H31.05.01T04:05:06.07+0100')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, 3600],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
|
||||||
|
h = Date._jisx0301('R01.05.01T04:05:06')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('R01.05.01T04:05:06,07')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, nil],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('R01.05.01T04:05:06Z')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, 0],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
h = Date._jisx0301('R01.05.01T04:05:06.07+0100')
|
||||||
|
assert_equal([2019, 5, 1, 4, 5, 6, 3600],
|
||||||
|
h.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset))
|
||||||
|
|
||||||
h = Date._jisx0301('')
|
h = Date._jisx0301('')
|
||||||
assert_equal({}, h)
|
assert_equal({}, h)
|
||||||
|
|
||||||
@ -1126,9 +1174,33 @@ class TestDateParse < Test::Unit::TestCase
|
|||||||
assert_equal(Date.new(2001,2,3), d)
|
assert_equal(Date.new(2001,2,3), d)
|
||||||
assert_equal(Date::ITALY + 10, d.start)
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
|
d = Date.jisx0301('H31.04.30', Date::ITALY + 10)
|
||||||
|
assert_equal(Date.new(2019,4,30), d)
|
||||||
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
|
d = Date.jisx0301('H31.05.01', Date::ITALY + 10)
|
||||||
|
assert_equal(Date.new(2019,5,1), d)
|
||||||
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
|
d = Date.jisx0301('R01.05.01', Date::ITALY + 10)
|
||||||
|
assert_equal(Date.new(2019,5,1), d)
|
||||||
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
d = DateTime.jisx0301('H13.02.03T04:05:06+07:00', Date::ITALY + 10)
|
d = DateTime.jisx0301('H13.02.03T04:05:06+07:00', Date::ITALY + 10)
|
||||||
assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d)
|
assert_equal(DateTime.new(2001,2,3,4,5,6,'+07:00'), d)
|
||||||
assert_equal(Date::ITALY + 10, d.start)
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
|
d = DateTime.jisx0301('H31.04.30T04:05:06+07:00', Date::ITALY + 10)
|
||||||
|
assert_equal(DateTime.new(2019,4,30,4,5,6,'+07:00'), d)
|
||||||
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
|
d = DateTime.jisx0301('H31.05.01T04:05:06+07:00', Date::ITALY + 10)
|
||||||
|
assert_equal(DateTime.new(2019,5,1,4,5,6,'+07:00'), d)
|
||||||
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
|
|
||||||
|
d = DateTime.jisx0301('R01.05.01T04:05:06+07:00', Date::ITALY + 10)
|
||||||
|
assert_equal(DateTime.new(2019,5,1,4,5,6,'+07:00'), d)
|
||||||
|
assert_equal(Date::ITALY + 10, d.start)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_given_string
|
def test_given_string
|
||||||
|
@ -406,6 +406,8 @@ class TestDateStrftime < Test::Unit::TestCase
|
|||||||
assert_equal('S64.01.07', Date.parse('1989-01-07').jisx0301)
|
assert_equal('S64.01.07', Date.parse('1989-01-07').jisx0301)
|
||||||
assert_equal('H01.01.08', Date.parse('1989-01-08').jisx0301)
|
assert_equal('H01.01.08', Date.parse('1989-01-08').jisx0301)
|
||||||
assert_equal('H18.09.01', Date.parse('2006-09-01').jisx0301)
|
assert_equal('H18.09.01', Date.parse('2006-09-01').jisx0301)
|
||||||
|
assert_equal('H31.04.30', Date.parse('2019-04-30').jisx0301)
|
||||||
|
assert_equal('R01.05.01', Date.parse('2019-05-01').jisx0301)
|
||||||
|
|
||||||
%w(M06.01.01
|
%w(M06.01.01
|
||||||
M45.07.29
|
M45.07.29
|
||||||
@ -414,7 +416,10 @@ class TestDateStrftime < Test::Unit::TestCase
|
|||||||
S01.12.25
|
S01.12.25
|
||||||
S64.01.07
|
S64.01.07
|
||||||
H01.01.08
|
H01.01.08
|
||||||
H18.09.01).each do |s|
|
H18.09.01
|
||||||
|
H31.04.30
|
||||||
|
R01.05.01
|
||||||
|
).each do |s|
|
||||||
assert_equal(s, Date.parse(s).jisx0301)
|
assert_equal(s, Date.parse(s).jisx0301)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#define RUBY_VERSION "2.6.9"
|
#define RUBY_VERSION "2.6.10"
|
||||||
#define RUBY_RELEASE_DATE "2022-04-12"
|
#define RUBY_RELEASE_DATE "2022-04-12"
|
||||||
#define RUBY_PATCHLEVEL 208
|
#define RUBY_PATCHLEVEL 209
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2022
|
#define RUBY_RELEASE_YEAR 2022
|
||||||
#define RUBY_RELEASE_MONTH 4
|
#define RUBY_RELEASE_MONTH 4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user