如何在Java中获得新的体验?

时间:2016-04-07 16:53:53

标签: java date time

在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是第二次输出的正确时间。

为什么我没有得到这个?

6 个答案:

答案 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