我试图替换该ZonedDateTime.toInstant
方法,因为该方法仅适用于Android的API 26。
但是我的应用程序应该支持
API19 。我想将ZonedDateTime转换为Date,以便执行以下操作:
final Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
final long millis = calendar.getTimeInMillis();
我要实现的目标如下:
我想计算当前日期与另一个日期之间的时差(以秒,分钟,小时为单位),以可能的最高单位获胜,因此我将得到例如5 days ago
结果。
解决方案(ThreeTen-Backport库):
运行良好,我已经在KitKat模拟器上进行了尝试。
private static final ChronoUnit[] chronoUnits = {ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS, ChronoUnit.HOURS, ChronoUnit.MINUTES, ChronoUnit.SECONDS};
private static final Map<ChronoUnit, Integer> chronoUnitPluralIdMap = new HashMap<ChronoUnit, Integer>() {{
put(ChronoUnit.YEARS, R.plurals.chrono_unit_years_ago);
put(ChronoUnit.MONTHS, R.plurals.chrono_unit_months_ago);
put(ChronoUnit.DAYS, R.plurals.chrono_unit_days_ago);
put(ChronoUnit.HOURS, R.plurals.chrono_unit_hours_ago);
put(ChronoUnit.MINUTES, R.plurals.chrono_unit_minutes_ago);
put(ChronoUnit.SECONDS, R.plurals.chrono_unit_seconds_ago);
}};
public static String getTimeStringUntilNowFromUTC(Context context, String utcDate) {
Instant now = Instant.now(Clock.systemUTC());
Instant then = Instant.parse(utcDate);
for (ChronoUnit chronoUnit : chronoUnits) {
if (then.isSupported(chronoUnit)) {
long units = chronoUnit.between(then, now);
if (units > 0) {
//noinspection ConstantConditions
return context.getResources().getQuantityString(chronoUnitPluralIdMap.get(chronoUnit), (int)units, (int)units);
}
}
}
return "-";
}
public static String getTimeBetweenTwoDates(Context context, String date1, String date2) {
Instant date1Instant = Instant.parse(date1);
Instant date2Instant = Instant.parse(date2);
final long seconds = ChronoUnit.SECONDS.between(date1Instant, date2Instant);
return getMinutesSecondsString(context, seconds);
}
我正在尝试编写一个方法来打印两个ZonedDateTimes之间的时间差,关于时区之间的差异。 我找到了一些解决方案,但它们都是为使用LocalDateTime而编写的。
因此,我希望这段代码能够在新的Java8date/time包下工作,因为它所做的只是将给定的ZonedDateTime转换成字符串,然后使用相同的内置DateTimeFormatter实例(ISO_INSTANT)返回: 但显然不是: 我已经看到了这个条目,但它对我没有帮助,因为a需要一个ZonedDateTime对象,而不是本地对象,还因为我已经安装了8U20:无法使用DateTimeForma
我是java.time包的新手。我有一个本地日期是2015-12-10。我需要将此转换为ZonedDateTime。时间应该是00:00:00,区域是zoneoffset.utc。 dateTimeException:无法从java.time.localDate类型的TemporalAccessor:2015-12-10获取Instant 我也试过: 这会产生意想不到的结果。 我查看了API并尝试
我使用Java8的ZonedDateTime和DateTimeFormatter。当我试图解析自己的模式时,它无法识别并抛出异常。
STS 4网站发布链接,在其网站上下载最新版本的IDE。我们如何下载STS的早期版本? 我希望下载4.3,因为它支持kotlin。 PS:我正在寻找导入spring框架代码到eclipse(STS)
我有一套和一个方法: 我可以终止lambda内部的forEach吗(使用或不使用异常)?我应该使用匿名类吗? 我可以这样做: 我正在寻找最快的解决方案,所以异常和一个'real'为每个循环是可以接受的,如果他们是足够快的。