FULL PRODUCT VERSION :
java version " 1.6.0_31 "
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
" after " method of java.sql.Timestamp returns wrong results, if timestamps differ only in milliseconds.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package timestampAfterDefect;
import java.sql.Timestamp;
import java.util.Date;
public class CheckDateTimestamp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long milisEarly = 1352301604100l;
long milisLate = 1352301604600l;
Date earlyDate;
Date lateDate;
Date earlyTimestamp;
Date lateTimestamp;
earlyDate = new Date(milisEarly);
lateDate = new Date(milisLate);
// 07 16:20:04 CET 2012
earlyTimestamp = new Timestamp(milisEarly);
lateTimestamp = new Timestamp(milisLate);
System.out.println( " Operating System: " +System.getProperty( " os.name " )+ " - " +System.getProperty( " os.arch " ));
System.out.println( " Java Version: " +System.getProperty( " java.vendor " )+ " - " +System.getProperty( " java.version " ));
System.out.println( " ===================================================
" );
System.out.println( " earlyDate = " +earlyDate + " = " +earlyDate.getTime());
System.out.println( " earlyTimestamp = " +earlyTimestamp + " = " +earlyTimestamp.getTime());
System.out.println( " lateDate = " +lateDate + " = " +lateDate.getTime());
System.out.println( " lateTimestamp = " +lateTimestamp + " = " +lateTimestamp.getTime());
System.out.println( " lateDate.after(earlyDate) = " + lateDate.after(earlyDate));
System.out.println( " lateTimestamp.after(earlyTimestamp) = " +lateTimestamp.after(earlyTimestamp));
System.out.println( " lateTimestamp.after(earlyDate) = " +lateTimestamp.after(earlyDate));
System.out.println( " lateDate.after(earlyTimestamp) = " +lateDate.after(earlyTimestamp));
//Execution Results:
//
//Operating System: Windows XP - x86
//Java Version: Sun Microsystems Inc. - 1.6.0_31
//===================================================
//
//earlyDate = Wed Nov 07 16:20:04 CET 2012 = 1352301604100
//earlyTimestamp = 2012-11-07 16:20:04.1 = 1352301604100
//lateDate = Wed Nov 07 16:20:04 CET 2012 = 1352301604600
//lateTimestamp = 2012-11-07 16:20:04.6 = 1352301604600
//lateDate.after(earlyDate) = true
//lateTimestamp.after(earlyTimestamp) = false
//lateTimestamp.after(earlyDate) = false
//lateDate.after(earlyTimestamp) = true
}
}
---------- END SOURCE ----------
SUPPORT :
YES
java version " 1.6.0_31 "
Java(TM) SE Runtime Environment (build 1.6.0_31-b05)
Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
" after " method of java.sql.Timestamp returns wrong results, if timestamps differ only in milliseconds.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
package timestampAfterDefect;
import java.sql.Timestamp;
import java.util.Date;
public class CheckDateTimestamp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long milisEarly = 1352301604100l;
long milisLate = 1352301604600l;
Date earlyDate;
Date lateDate;
Date earlyTimestamp;
Date lateTimestamp;
earlyDate = new Date(milisEarly);
lateDate = new Date(milisLate);
// 07 16:20:04 CET 2012
earlyTimestamp = new Timestamp(milisEarly);
lateTimestamp = new Timestamp(milisLate);
System.out.println( " Operating System: " +System.getProperty( " os.name " )+ " - " +System.getProperty( " os.arch " ));
System.out.println( " Java Version: " +System.getProperty( " java.vendor " )+ " - " +System.getProperty( " java.version " ));
System.out.println( " ===================================================
" );
System.out.println( " earlyDate = " +earlyDate + " = " +earlyDate.getTime());
System.out.println( " earlyTimestamp = " +earlyTimestamp + " = " +earlyTimestamp.getTime());
System.out.println( " lateDate = " +lateDate + " = " +lateDate.getTime());
System.out.println( " lateTimestamp = " +lateTimestamp + " = " +lateTimestamp.getTime());
System.out.println( " lateDate.after(earlyDate) = " + lateDate.after(earlyDate));
System.out.println( " lateTimestamp.after(earlyTimestamp) = " +lateTimestamp.after(earlyTimestamp));
System.out.println( " lateTimestamp.after(earlyDate) = " +lateTimestamp.after(earlyDate));
System.out.println( " lateDate.after(earlyTimestamp) = " +lateDate.after(earlyTimestamp));
//Execution Results:
//
//Operating System: Windows XP - x86
//Java Version: Sun Microsystems Inc. - 1.6.0_31
//===================================================
//
//earlyDate = Wed Nov 07 16:20:04 CET 2012 = 1352301604100
//earlyTimestamp = 2012-11-07 16:20:04.1 = 1352301604100
//lateDate = Wed Nov 07 16:20:04 CET 2012 = 1352301604600
//lateTimestamp = 2012-11-07 16:20:04.6 = 1352301604600
//lateDate.after(earlyDate) = true
//lateTimestamp.after(earlyTimestamp) = false
//lateTimestamp.after(earlyDate) = false
//lateDate.after(earlyTimestamp) = true
}
}
---------- END SOURCE ----------
SUPPORT :
YES