我一直试图根据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);
答案 0 :(得分:0)
如果您的Date对象是java.util.Date对象,那么您的日期实际上并没有得到转换。无需深入探讨... java.util.Date的缺点就是导致新的java.time包的原因。
您需要的只是这个
long timeTillRelease =
release.getDate().toInstant().toEpochMilli() - Instant.now().toEpochMilli();