I think, there is a bug in File.mtime, unfortunately:
ruby 1.8.4 (2005-12-24) [i386-mswin32]
Windows XP with NTFS filesystem
When reading File.mtime( ‘any existing filename’),
the result is different by one hour, when doing this with the
computer clock set to a daylight saving time (DST) and doing this
with the computer clock set to a standard time.
The bug, if you are correct, is in the Windows’ implementation of _stat
I think your best bet is, perhaps using the Perl module as a baseline,
to submit a patch to win32.c to ruby-core, keeping in mind that future
versions of Windows just might fix this bug.