From: masaki.suketa@... Date: 2014-09-21T02:18:45+00:00 Subject: [ruby-dev:48567] [ruby-trunk - Bug #10258] [Closed] conversion WIN32OLE_VARIANT and Time Issue #10258 has been updated by Masaki Suketa. Status changed from Open to Closed % Done changed from 0 to 100 Applied in changeset r47658. ---------- ext/win32ole/win32ole.c (rbtime2vtdate, vtdate2rbtime): fix the bug in conversion of milliseconds. [Bug #10258] test/win32ole/test_win32ole_variant.rb (test_conversion_dbl2date_with_msec, test_conversion_time2date_with_msec): use assert_in_delta instead of assert_equal to treat an acceptable error range. ---------------------------------------- Bug #10258: conversion WIN32OLE_VARIANT and Time https://bugs.ruby-lang.org/issues/10258#change-49020 * Author: Masaki Suketa * Status: Closed * Priority: Normal * Assignee: Masaki Suketa * Category: core * Target version: current: 2.2.0 * ruby -v: 2.2.0dev, 2.2.0-preview1 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- 今日、うささんに教えていただいたテストの失敗は、こういう事象と同様だと思われます。 require 'win32ole' t0 = Time.new(2014,9,19) t0 += 0.9999 v = WIN32OLE_VARIANT.new(t0) t1 = v.value p t0 # => 2014-09-19 00:00:00 +0900 p t1 # => 2014-09-19 00:00:01 +0900 p t0.to_f # => 1411052400.9999 p t1.to_f # => 1411052401.0 t0 = Time.new(2014,9,19, 0, 0, 59) t0 += 0.9999 v = WIN32OLE_VARIANT.new(t0) t1 = v.value p t0 # => 2014-09-19 00:00:59 +0900 p t1 # => 2014-09-19 00:02:00 +0900 p t0.to_f # => 1411052459.9999 p t1.to_f # => 1411052520.0 -- https://bugs.ruby-lang.org/