如何解决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()));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。