如何在java中从两个不同的日期获取时间(hh:mm:ss)
我从两个不同的日期获得千秒,试图将千秒转换为时间戳。我已经编写了以下代码如何在java中从两个不同的日期获取时间(hh:mm:ss),java,date,Java,Date,我从两个不同的日期获得千秒,试图将千秒转换为时间戳。我已经编写了以下代码 Date d1 = new Date(); for(int i=0;i<1000000;i++){ System.out.println(i); } Date d2 = new Date(); System.out.println(d1); System.out.println(d2); long seconds = d2.getTime()
Date d1 = new Date();
for(int i=0;i<1000000;i++){
System.out.println(i);
}
Date d2 = new Date();
System.out.println(d1);
System.out.println(d2);
long seconds = d2.getTime()-d1.getTime();
Date d3 = new Date(seconds);
DateFormat df = new SimpleDateFormat("HH:mm:ss");
System.out.println(seconds);
System.out.println("Time is : "+df.format(d3));
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(seconds);
System.out.println(df.format(cal.getTime()));
但实际的差异是2秒或3秒,这是正确的方法还是有其他方法。设置时区:
DateFormat df = new SimpleDateFormat("HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(seconds);
System.out.println("Time is : "+df.format(d3));
Date
类从1970年1月1日00:00:00 UTC开始以毫秒为单位测量时间。看起来您的本地时间比UTC早了5个小时,或者是1970年1月1日,这使得UTC“零”日期出现在您所在时区的上午5点。而不是for loop do
其余的都应该起作用。这种情况发生时,Java编译器会优化、删除或重新排列代码,因此您无法完全确定d1
的实例化是在循环之前还是之后发生的。它可能是任何东西
DateFormat df = new SimpleDateFormat("HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(seconds);
System.out.println("Time is : "+df.format(d3));
Thread.sleep(2000); // 2000 milliseconds