2015-11-03 66 views
2

我有下面的Java代码。无法获得新时间

Date date = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String startFormattedDate = sdf.format(date); 
System.out.println(startFormattedDate); 
Thread.sleep(10000L); 
String endFormattedDate = sdf.format(date); 
System.out.println(endFormattedDate); 

这里基本上我试图实现的是,打印当前时间,等待10秒钟,然后再打印时间。但令我惊讶的是,控制台在10秒后同时打印。请让我知道如何在等待10秒后获得时间。因为我需要根据两个时间做一些计算。

回答

3

您始终使用相同的Date实例。为了达到你想要什么,你需要时间

Date date = new Date(); 
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String startFormattedDate = sdf.format(date); 
System.out.println(startFormattedDate); 
Thread.sleep(10000L); 
Date after10Seconds = new Date(); //here 
String endFormattedDate = sdf.format(after10Seconds); 
System.out.println(endFormattedDate); 
2

由于使用了相同的变量日期。它在10秒后也显示相同的数据。你需要在10秒后重新初始化它。

1

的新实例创建超时后新Date对象来获取当前时间:

String endFormattedDate = sdf.format(new Date()); 

,你当然可以10000 ms加起来上一次并得到一个类比 结果没有超时:

Date current = new Date(date.getTime() + 10000); 
String endFormattedDate = sdf.format(current); 
1

我想这是因为你做只有一个章安Date()的开始处。尝试在打印开始日期后执行此操作。

Date date = new Date(); 
SimpleDateFormat edf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
String endFormattedDate = edf.format(date); 
System.out.println(endFormattedDate);