计算UTC(通用时间)中的日期/时间差?

时间:2018-08-12 01:15:59

标签: java android

我一直试图根据UTC来找到两个日期之间的差,以毫秒为单位,但是每次我使用SimpleDateFormat将日期(以毫秒为单位)格式化为UTC,然后将格式化的日期解析为Date对象时,当我调用时将日期getTime()转换回用户默认时区。我希望它保留在UTC中,以便我可以得到正确日期之间的差额。

我的代码:

        String dateFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat newFormatter = new SimpleDateFormat(dateFormat);
        newFormatter.setTimeZone(TimeZone.getTimeZone("GMT"));
        String formattedReleaseDate = newFormatter.format(release.getDate());
        Date releaseDate = newFormatter.parse(formattedReleaseDate);

        // Now
        Calendar calendarNow = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        String formattedDateNow = newFormatter.format(calendarNow.getTimeInMillis());
        Date nowDate = newFormatter.parse(formattedDateNow);
        long timeTillRelease =  releaseDate.getTime() - nowDate.getTime();
        Log.d(TAG, "Time till release:" + timeTillRelease);

1 个答案:

答案 0 :(得分:0)

如果您的Date对象是java.util.Date对象,那么您的日期实际上并没有得到转换。无需深入探讨... java.util.Date的缺点就是导致新的java.time包的原因。

您需要的只是这个

long timeTillRelease = 
       release.getDate().toInstant().toEpochMilli() - Instant.now().toEpochMilli();