我正在寻找通过Java Date库 1. java.util.Date, 2. Date4J 3. Joda-time
找出我是否可以对两个日期对象执行时间减法,精确到毫秒。
我收到2011-05-29T22:50:12.692作为String,并通过使用SimpleDateFormat解析它将其转换为Date对象。
另一个Date对象也将收到一个String。我想从两个Date对象中减去。
有什么想法吗?
基本上我想获得两个Date对象之间的间隔,精确到毫秒。
答案 0 :(得分:9)
答案 1 :(得分:2)
在java.util.Date中有一个名为Date.getTime()
的方法,你可以用它来获取时间。
答案 2 :(得分:1)
你的意思是这样吗?
Date d1 =
Date d2 =
long intervalInMillis = d1.getTime() - d2.getTime();
答案 3 :(得分:1)
Date()对象的内部表示是超过纪元的毫秒数。只需使用getTime()方法获取这些值并对它们进行算术运算。然后,您可以基于该值构造一个新的Date对象,并且完成了。
答案 4 :(得分:1)
得到毫秒的差异:
long millis = date1.getTime() - date2.getTime();
答案 5 :(得分:0)
您可以利用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());
}
}
答案 6 :(得分:0)
这就是你想要的:
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()));