我正在创建一个可以显示某个日期剩余时间的应用程序,以及某个日期之后经过的时间。但我忍受了一些困难,日期不到1970年,大于3300.我找到了解释为什么会发生。
问题是来自getTimeInMillis的这句话: 从纪元开始的当前时间为UTC毫秒。 而且,据我所知,这个时代始于1970年1月1日,在此之前你会得到一个负数。
我的问题是如何解决这个问题。 (是的,我听说过JodaTime,我不允许在这个应用程序中使用这个库。)
我应该使用哪些默认(标准)工具?
这是一段无法正常运行的代码。
private void getDateTime()
{
Date date = new Date();
timeRemaining = Calendar.getInstance();
date.setTime(timeRemaining.getTimeInMillis());
millis = Math.abs(timeRemaining.getTimeInMillis() - targetDate.getTimeInMillis());
int scnds = (int) (millis / 1000) % 60 ;
int mnts = (int) ((millis / (1000 * 60)) % 60);
int hrs = (int) ((millis / (1000 * 60 * 60)) % 24);
int dys = (int) (millis / (1000 * 60 * 60 * 24));
resultDate.setText(getString(R.string.formating, dys, hrs, mnts, scnds));
}
答案 0 :(得分:0)
您可以通过利用Java 8
中引入的Duration和LocalDateTime类来实现这一目标-
import java.time.Duration;
import java.time.LocalDateTime;
class Main {
public static void main(String[] args) {
LocalDateTime fromDateTime = LocalDateTime.of(1914, 9, 10, 0, 0, 0);
LocalDateTime toDateTime = LocalDateTime.of(2014, 12, 16, 0, 0, 0);
System.out.println(Duration.between(fromDateTime, toDateTime).toMillis());
}
}