我想以毫秒为单位获得两次时间之间的时差

时间:2018-07-31 05:57:12

标签: java android time

我想获得两次之间的时差,以毫秒为单位。

注意

如果差异超过半秒,它们将返回1000毫秒,那么如何获得   适当的毫秒,例如相差半秒就可以得到500毫秒

两次之间的差值为半秒,然后我的代码返回   1000毫秒表示 1秒,但实际上是 0.5秒,因此如何获得 500  毫秒(如果差异为半秒)

    Date Date1 = sdf.parse(lastTime);
    Date Date2 = sdf.parse(sdf.format(Calendar.getInstance().getTime()));
    long millie = Date2.getTime() - Date1.getTime();

4 个答案:

答案 0 :(得分:2)

SimpleDateFormat默认不包括毫秒。所以

sdf.format(Calendar.getInstance().getTime());

不输出毫秒,所有内容均四舍五入为秒。

定义这样的自定义日期格式,包括毫秒:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ\"");

答案 1 :(得分:1)

如果您使用java8,请尝试以下操作:

LocalDateTime startTime = LocalDateTime.of(2018,07,31,12,1);
long diff = ChronoUnit.MILLIS.between(startTime,LocalDateTime.now());

答案 2 :(得分:0)

通过调用以下方法可以找到两个日期之间的毫秒,秒,分钟和小时之间的时差,您可以根据需要更改方法。

    public void printDifference(Date startDate) {

        Date endDate=new Date();

        long different = endDate.getTime() - startDate.getTime(); //Different in miliseconds

        System.out.println("startDate : " + startDate);
        System.out.println("endDate : "+ endDate);
        System.out.println("different : " + different);
        int months=0,year=0;
        long secondsInMilli = 1000;
        long minutesInMilli = secondsInMilli * 60;
        long hoursInMilli = minutesInMilli * 60;
        long daysInMilli = hoursInMilli * 24;

        long elapsedDays = different / daysInMilli;
        different = different % daysInMilli;

        long elapsedHours = different / hoursInMilli;
        different = different % hoursInMilli;

        long elapsedMinutes = different / minutesInMilli;
        different = different % minutesInMilli;

        long elapsedSeconds = different / secondsInMilli;

    }

答案 3 :(得分:0)

尝试下面的代码:

         Date date = null;
         String value="3 Feb 2018 13:01:41 GMT";
         DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
         formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
         try {
            date = formatter.parse(value);
         } catch (Exception e) {
            e.printStackTrace();
        }
        // Prints the date in the CET timezone
        System.out.println("ConvertTime from serverformat before settimezone ::" + formatter.format(date));
        // Set the formatter to use a different timezone
        formatter.setTimeZone(TimeZone.getDefault());
        // Prints the date in the IST timezone
        System.out.println("ConvertTime from serverformat after settimezone ::" + formatter.format(date));
        DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
        Date dateobj = new Date();
        System.out.println("Current date and time before settimezone:: " + df.format(dateobj));
        df.setTimeZone(TimeZone.getDefault());
        System.out.println("current format after settimezone ::" + df.format(dateobj));
        int difference = 0;
        int diff_Minutes=0;
        int diff_Seconds=0;
        System.out.println("Default values::" + difference+"   "+diff_Minutes+"   "+diff_Seconds);
        difference = (int) (dateobj.getTime() - date.getTime());
        diff_Minutes = difference / (60 * 1000) % 60;
        diff_Seconds = difference / 1000 % 60;

在这里,我正在从服务器时间转换当前时间。在这里,您必须相差两次。我希望你能理解上面的代码。让我知道是否可以... 谢谢。