Java库,将两个Date对象相加/相减,以毫秒为单位

|| 我正在通过Java日期库 1. java.util.Date, 2. Date4J 3.乔达时间 找出我是否可以对两个Date对象执行时间减法,精确到毫秒。 我收到2011-05-29T22:50:12.692作为字符串,并通过使用SimpleDateFormat对其进行解析将其转换为Date对象。 另一个Date对象也将收到一个字符串。我想从两个Date对象减去。 有任何想法吗? 基本上我想得到两个Date对象之间的间隔,以毫秒为单位的精度。     
已邀请:
        尝试使用Date.getTime()
long timeBetweenInMillis = d2.getTime() - d1.getTime();
编辑 假设ѭ1在时间上在after2之后。     
        在java.util.Date中,有一种名为
Date.getTime()
的方法,您可以使用该方法来获取时间。     
        你是这个意思吗
Date d1 = 
Date d2 =
long intervalInMillis = d1.getTime() - d2.getTime();
    
        Date()对象的内部表示形式是经过纪元的毫秒数。只需使用getTime()方法获取这些值并对它们进行算术运算即可。然后,您可以基于该值构造一个新的Date对象,然后完成。     
        只求毫秒差:
long millis = date1.getTime() - date2.getTime();
    
        您可以利用XMLGregorianCalendar代替SimpleDateFormat(请注意,SimpleDateFormat不是线程安全的:http://www.codefutures.com/weblog/andygrove/2007/10/simpledateformat-and-thread-safety.html):
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

public class Demo {

    public static void main(String[] args) throws Exception {
        DatatypeFactory df = DatatypeFactory.newInstance();
        XMLGregorianCalendar date2 = df.newXMLGregorianCalendar(\"2011-05-29T22:50:12.692\");
        XMLGregorianCalendar date1 = df.newXMLGregorianCalendar(\"2011-03-29T22:50:12.692\");

        System.out.println(date2.toGregorianCalendar().getTimeInMillis() - date1.toGregorianCalendar().getTimeInMillis());
    }

}
    
        这就是你想要的:
Date result = new Date(d2.getTime() - d1.getTime());
说明:
d2.getTime() - d1.getTime() 
返回日期之间的毫秒差
new Date(milliseconds);
创建一个新的Date对象,该对象设置为自纪元以来的毫秒数。 编辑 如果您只想要积极的区别,请将其更改为此。这样,您输入的顺序无关紧要:
Date result = new Date(Math.abs(d2.getTime() - d1.getTime()));
    

要回复问题请先登录注册