小智 35
您可以使用Joda Time库轻松完成此操作 - 除了使用标准的Java Date和Calendar类之外,我还可以将它用于任何相关的时间.使用库查看下面的示例:
MutableDateTime epoch = new MutableDateTime();
epoch.setDate(0); //Set to Epoch time
DateTime now = new DateTime();
Days days = Days.daysBetween(epoch, now);
Weeks weeks = Weeks.weeksBetween(epoch, now);
Months months = Months.monthsBetween(epoch, now);
System.out.println("Days Since Epoch: " + days.getDays());
System.out.println("Weeks Since Epoch: " + weeks.getWeeks());
System.out.println("Months Since Epoch: " + months.getMonths());
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下输出:
Days Since Epoch: 15122
Weeks Since Epoch: 2160
Months Since Epoch: 496
Run Code Online (Sandbox Code Playgroud)
sof*_*arn 22
使用Java 8及更高版本中内置的java.time类.
LocalDate now = LocalDate.now();
LocalDate epoch = LocalDate.ofEpochDay(0);
System.out.println("Days: " + ChronoUnit.DAYS.between(epoch, now));
System.out.println("Weeks: " + ChronoUnit.WEEKS.between(epoch, now));
System.out.println("Months: " + ChronoUnit.MONTHS.between(epoch, now));
Run Code Online (Sandbox Code Playgroud)
产量
Days: 16857
Weeks: 2408
Months: 553
Run Code Online (Sandbox Code Playgroud)
min*_*dex 11
我有点惊讶,几乎所有的答案实际上都在计算epoch和之间的天数now。随着java.time.LocalDate它的那样简单:
LocalDate.now().toEpochDay()
Run Code Online (Sandbox Code Playgroud)
Long currentMilli = System.currentTimeMillis();
Long seconds = currentMilli / 1000;
Long minutes = seconds / 60;
Long hours = minutes / 60;
Long days = hours / 24;
System.out.println("Days since epoch : " + days);
Run Code Online (Sandbox Code Playgroud)
要么
System.out.println("Days since epoch : " + ((int) currentMilli / 86400000));
Run Code Online (Sandbox Code Playgroud)