aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsonots <sonots@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-18 01:26:12 +0000
committersonots <sonots@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-03-18 01:26:12 +0000
commit5f11a6eb6cca740b08384d1e4a68df643d98398c (patch)
tree8e7df5afcda0c95f2abd1a21d525988b9eb94666
parentf8e79c84a90bfa32d4dd00f7d5db756239b084b7 (diff)
downloadruby-5f11a6eb6cca740b08384d1e4a68df643d98398c.tar.gz
* ext/date/date_core.c (datetime_to_time): preserve timezone info
[Bug #12189] [Fix GH-1295] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--ext/date/date_core.c11
-rw-r--r--test/date/test_date_conv.rb8
3 files changed, 15 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 288da06382..f80dea8dad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Mar 18 10:24:12 2016 Naotoshi Seo <sonots@gmail.com>
+
+ * ext/date/date_core.c (datetime_to_time): preserve timezone info
+ [Bug #12189] [Fix GH-1295]
+
Fri Mar 18 10:17:00 2016 Kenta Murata <mrkn@mrkn.jp>
* bignum.c (rb_big_hash): make it public function to be available in
diff --git a/ext/date/date_core.c b/ext/date/date_core.c
index 64f19e4d54..0b4611a8f7 100644
--- a/ext/date/date_core.c
+++ b/ext/date/date_core.c
@@ -8587,21 +8587,24 @@ date_to_datetime(VALUE self)
static VALUE
datetime_to_time(VALUE self)
{
- volatile VALUE dup = dup_obj_with_new_offset(self, 0);
+ volatile VALUE dup = dup_obj(self);
{
VALUE t;
get_d1(dup);
- t = f_utc6(rb_cTime,
+ t = rb_funcall(rb_cTime,
+ rb_intern("new"),
+ 7,
m_real_year(dat),
INT2FIX(m_mon(dat)),
INT2FIX(m_mday(dat)),
INT2FIX(m_hour(dat)),
INT2FIX(m_min(dat)),
f_add(INT2FIX(m_sec(dat)),
- m_sf_in_sec(dat)));
- return f_getlocal(t);
+ m_sf_in_sec(dat)),
+ INT2FIX(m_of(dat)));
+ return t;
}
}
diff --git a/test/date/test_date_conv.rb b/test/date/test_date_conv.rb
index 8b99970dd7..0d6c456163 100644
--- a/test/date/test_date_conv.rb
+++ b/test/date/test_date_conv.rb
@@ -32,12 +32,10 @@ class TestDateConv < Test::Unit::TestCase
end
def test_to_time__from_datetime
- d = DateTime.new(2004, 9, 19, 1, 2, 3, 9.to_r/24) + 456789.to_r/86400000000
+ d = DateTime.new(2004, 9, 19, 1, 2, 3, 8.to_r/24) + 456789.to_r/86400000000
t = d.to_time
- if t.utc_offset == 9*60*60
- assert_equal([2004, 9, 19, 1, 2, 3, 456789],
- [t.year, t.mon, t.mday, t.hour, t.min, t.sec, t.usec])
- end
+ assert_equal([2004, 9, 19, 1, 2, 3, 456789, 8*60*60],
+ [t.year, t.mon, t.mday, t.hour, t.min, t.sec, t.usec, t.utc_offset])
d = DateTime.new(2004, 9, 19, 1, 2, 3, 0) + 456789.to_r/86400000000
t = d.to_time.utc