在Java中获取更新时间的正确方法是什么?
@return void
这会给我这样的东西:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
java.util.Date today = Calendar.getInstance().getTime();
String currTime = dateFormat.format(today);
System.out.println(currTime);
try {
Thread.sleep(2000);
System.out.println("2s delayed"); //2000 milliseconds delay
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println(currTime);
正如你所看到的那样,同一时间,即使在2s延迟之后也是如此。
12:39: 07 .281是第二次输出的正确时间。
为什么我没有得到这个?
答案 0 :(得分:1)
在执行第二次System.out.println(currTime)
之前,您需要将变量currTime
的值重置为下一个:
today = Calendar.getInstance().getTime();
currTime = dateFormat.format(today);
System.out.println(currTime);
答案 1 :(得分:1)
每次要更新时,请致电now()
。
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
System.out.println(LocalDateTime.now().format(format));
TimeUnit.SECONDS.sleep(2);
System.out.println(LocalDateTime.now().format(format));
答案 2 :(得分:1)
我有一种更简单的方法....
但这与您的代码有些不同.....
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
public class d_and_t
{
public static void main(String[] args)
{
Scanner sc= new Scanner (System.in);
System.out.println("Enter the place for time... for ex... IST...");
String a=sc.nextLine();
System.out.println("the time and date is ........");
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MMM-dd");
System.out.println(dt.format(new Date()));
}
}
在这里您可以选择去任何地方的时间...
BufferedReader方法.......
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import java.io.*;
public class d_and_t
{
public static void main(String[] args)
{
Scanner sc= new Scanner (System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter the place for time... for ex... IST...");
try{
String a=br.readLine();
}catch(Exception e){
e.printStackTrace();
}
System.out.println("the time and date is ........");
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MMM-dd");
System.out.println(dt.format(new Date()));
}
}
答案 3 :(得分:0)
一个calendar
对象不是为了这个,你实际上可以反复设置新的日期/时间,但是正如所说的那样,这个类不是为此做的,而是一个不好的做法。 ..你应该使用System.currentMills
或者创建Date
类的新实例。
答案 4 :(得分:0)
想象一下你有一个时钟。你的变量#1: first-text and some-text
#2: first-text-a1 and sec-b2-text
#3: first-text-a1, sec-b2-text and third-c3-text
#4: some-text-1a, sec-text-b2, third-text and last-text-c1
就像那个时钟的图片。经过一段时间后你正在看那张照片,你看到的是旧时光。要查看当前时间,您需要拍摄时钟的新图片。延迟后再次获取时间并格式化。
today
答案 5 :(得分:0)
为什么使用Calendar
来获取Date
?只需致电new Date()
。
无论如何,主要问题是您在打印第二个时间戳之前没有获得更新时间。当您拨打new Date()
时,您将获得通话时间。要获得新的时间戳,请再次致电new Date()
。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
System.out.println(dateFormat.format(new Date()));
try {
Thread.sleep(2000);
System.out.println("2s delayed");
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println(dateFormat.format(new Date())); // different Date object to get fresh time
<强>输出强>
2016/04/07 13:12:51.299
2s delayed
2016/04/07 13:12:53.299