Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java时间问题_Java_Date_Time - Fatal编程技术网

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