Java时间问题
我有一个与时间对象不一致的问题Java时间问题,java,date,time,Java,Date,Time,我有一个与时间对象不一致的问题 Time time1 = new Time(72000000); //21:00 Time time2 = new Time(new Date().getTime()); //before 21 pm time2.before(time1); 最后一行总是返回false,为什么?时间: 围绕java.util.Date类的精简包装器,允许JDBCAPI将其标识为SQL时间值。Time类添加了格式化和解析操作,以支持时间值的JDBC转义语法。 日期组件应设置
Time time1 = new Time(72000000); //21:00
Time time2 = new Time(new Date().getTime()); //before 21 pm
time2.before(time1);
最后一行总是返回false,为什么?时间:
围绕java.util.Date类的精简包装器,允许JDBCAPI将其标识为SQL时间值。Time类添加了格式化和解析操作,以支持时间值的JDBC转义语法。
日期组件应设置为1970年1月1日的“零历元”值,并且不应访问
基本上,你是在比较1970年1月1日的21:00和一天中某个时刻的当前日期。显然,前一个时间发生得更早并且“更小”。因为您没有另外指定,所以我假设
time
对象是java.sql.time
这个对象使用了一个超类java.util.Date
,因此它实际上是一个完整的日期对象。就JDBC(SQL)而言,它只关注日期的时间部分
这:
…创建表示1970年1月1日21:00小时的对象。它总是在任何当前时间之前。这不是你认为它应该做的事情
Time time1 = new Time(72000000);
见此:
现在,希望您能理解……时间1似乎是14:00。运行下面的代码段
Time time1 = new Time(72000000); //21:00
System.out.println(time1); //prints 14:00
System.out.println(new Date());
Time time2 = new Time(new Date().getTime()); //before 21 pm
Java Time是关于自1970年1月1日以来ms的数量。这是一个经常被投票表决但在API中被直接回答的问题。提供的答案很好地解释了发生了什么。如果可以的话,我建议使用JodaTime()作为时间和日期操作的API,这样会更好
Time
public Time(long time)
Constructs a Time object using a milliseconds time value.
Parameters:
time - milliseconds since January 1, 1970, 00:00:00 GMT; a negative number is milliseconds before January 1, 1970, 00:00:00 GMT
Time time1 = new Time(72000000); //21:00
System.out.println(time1); //prints 14:00
System.out.println(new Date());
Time time2 = new Time(new Date().getTime()); //before 21 pm