猿问

Android:如何从现在到下周星期一凌晨 3 点以秒为单位获得时间?

我目前正在尝试在我的 android 应用程序中创建一个 firebase JobDispatcher,它将在星期一凌晨 3 点左右开始工作,无论工作何时创建。我已经看到使用 Joda-Time、Period 类和 TemporalAdjusters 的示例,但我正在尝试支持 API 级别 16 及更高级别,因此我需要一些可以使用这些的东西。

目前我正在构建一个具有以下约束的新工作(除其他外) .setTrigger(Trigger.executionWindow(secondsUntilMonday, secondsUntilMonday + toleranceInterval))

但是我似乎找不到任何示例说明如何将我的 secondsUntilMonday 设置为调用该方法时与下一次周一凌晨 3 点左右之间的秒数。

请帮忙!


FFIVE
浏览 199回答 2
2回答

慕侠2389804

时间    ZoneId here = ZoneId.of("America/Danmarkshavn");    ZonedDateTime now = ZonedDateTime.now(here);    ZonedDateTime nextMondayAtThree = now.with(TemporalAdjusters.next(DayOfWeek.MONDAY))            .with(LocalTime.of(3, 0));    long secondsUntilMonday = ChronoUnit.SECONDS.between(now, nextMondayAtThree);    System.out.println(nextMondayAtThree);    System.out.println("Seconds: " + secondsUntilMonday);请替换您的时区,因为它可能不是美国/丹麦港。我还邀请您不仅要比较行数,还要比较使用过时Calendar类的答案与阅读的难易程度(不要误解我:如果您想使用Calendar该类,那将是一个很好的答案;我只是不要认为您Calendar在比较时会想要使用该类)。问题:我可以java.time在 Android API 级别 16 及更高级别上使用吗?是的,java.time在较旧和较新的 Android 设备上都能很好地工作。它只需要至少Java 6。在 Java 8 及更高版本以及新的 Android 设备上(有人告诉我,从 API 级别 26 开始)新的 API 是内置的。在 Java 6 和 7 中获得 ThreeTen Backport,新类的后向移植(ThreeTen for JSR 310,现代 API 在此处首次被描述)。在(较旧的)Android 上,使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。确保从包org.threeten.bp和子包中导入日期和时间类。
随时随地看视频慕课网APP

相关分类

Java
我要回答