[前][次][番号順一覧][スレッド一覧]

ruby-changes:42095

From: sonots <ko1@a...>
Date: Fri, 18 Mar 2016 10:26:17 +0900 (JST)
Subject: [ruby-changes:42095] sonots:r54169 (trunk): * ext/date/date_core.c (datetime_to_time): preserve timezone info

sonots	2016-03-18 10:26:12 +0900 (Fri, 18 Mar 2016)

  New Revision: 54169

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=54169

  Log:
    * ext/date/date_core.c (datetime_to_time): preserve timezone info
      [Bug #12189] [Fix GH-1295]

  Modified files:
    trunk/ChangeLog
    trunk/ext/date/date_core.c
    trunk/test/date/test_date_conv.rb
Index: ext/date/date_core.c
===================================================================
--- ext/date/date_core.c	(revision 54168)
+++ ext/date/date_core.c	(revision 54169)
@@ -8587,21 +8587,24 @@ date_to_datetime(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/date/date_core.c#L8587
 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;
     }
 }
 
Index: test/date/test_date_conv.rb
===================================================================
--- test/date/test_date_conv.rb	(revision 54168)
+++ test/date/test_date_conv.rb	(revision 54169)
@@ -32,12 +32,10 @@ class TestDateConv < Test::Unit::TestCas https://github.com/ruby/ruby/blob/trunk/test/date/test_date_conv.rb#L32
   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
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 54168)
+++ ChangeLog	(revision 54169)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Fri Mar 18 10:24:12 2016  Naotoshi Seo  <sonots@g...>
+
+	* 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@m...>
 
 	* bignum.c (rb_big_hash): make it public function to be available in

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]