From: Thomas Wieczorek Date: 2008-02-22T17:20:35+09:00 Subject: Re: DateTime.new vs. DateTime.now You forgot to set the offset parameter which is defaulted to 0. It is a fraction of a day and represents the time added to a timezone. irb(main):020:0> x = DateTime.now => # irb(main):021:0> y = DateTime.new(x.year, x.month, x.day, x.hour, x.min, x.sec, x.sec_fraction, x.offset) => # irb(main):022:0> (x-y).to_f => -0.0416550925925926 The difference is probably just a float point precision error. You can find more to new(which is aliased as civil) at http://www.ruby-doc.org/core/classes/DateTime.html#M002822