Index: src/org/jruby/javasupport/JavaUtil.java
===================================================================
RCS file: /cvsroot/jruby/jruby/src/org/jruby/javasupport/JavaUtil.java,v
retrieving revision 1.29
diff -b -u -r1.29 JavaUtil.java
--- src/org/jruby/javasupport/JavaUtil.java	26 Oct 2005 05:34:13 -0000	1.29
+++ src/org/jruby/javasupport/JavaUtil.java	25 Mar 2006 14:23:26 -0000
@@ -32,6 +32,8 @@
  ***** END LICENSE BLOCK *****/
 package org.jruby.javasupport;
 
+import java.util.Date;
+
 import org.jruby.IRuby;
 import org.jruby.RubyBoolean;
 import org.jruby.RubyFloat;
@@ -120,6 +122,9 @@
 			return new Character('\0');
         } else if (javaClass == String.class) {
             return ((RubyString) rubyObject.callMethod("to_s")).getValue();
+        } else if (Date.class.isAssignableFrom(javaClass) && rubyObject.respondsTo("to_i")) {
+        	    long numSeconds = ((RubyNumeric) rubyObject.callMethod("to_i")).getLongValue();
+            return new Date(numSeconds * 1000);
         } else {
             return ((JavaObject) rubyObject).getValue();
         }
@@ -173,6 +178,12 @@
             return runtime.newString(object.toString());
         } else if (IRubyObject.class.isAssignableFrom(javaClass)) {
             return (IRubyObject) object;
+        } else if (Date.class.isAssignableFrom(javaClass)) {
+        	   Date date = (Date) object;
+			return runtime.getClass("Time").callMethod("at", new IRubyObject[] {
+				convertJavaToRuby(runtime, new Long(date.getTime() / 1000), Long.class),
+				convertJavaToRuby(runtime, new Long((date.getTime() % 1000) * 1000), Long.class),
+			});
         } else {
             return JavaObject.wrap(runtime, object);
         }
