gpt4 book ai didi

java - Android:如何获取从现在到下周一凌晨 3 点的时间(以秒为单位)?

转载 作者:行者123 更新时间:2023-12-02 10:44:39 25 4
gpt4 key购买 nike

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

目前我正在建立一项具有以下约束(除其他外)的新工作.setTrigger(Trigger.executionWindow(secondsUntilMonday, 秒直到星期一 + 容差间隔))

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

请帮忙!

最佳答案

这里有一个方法可以帮助你:

@Test
public void computeSecondsToMonday(){
Calendar c = Calendar.getInstance();
System.out.print("\r\n" + c.getTime().toString());

long millisNow = c.getTimeInMillis();

// let's advance to nex Monday

int dw = c.get(Calendar.DAY_OF_WEEK);

// days until monday
int daysToMonday = 0;
if(dw >= Calendar.MONDAY){
daysToMonday = Calendar.SATURDAY - dw + Calendar.MONDAY;
} else {
daysToMonday = Calendar.MONDAY - dw;
}

// now add days to Monday
c.add(Calendar.DAY_OF_MONTH, daysToMonday);
c.set(Calendar.HOUR_OF_DAY, 3);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
// we're in next Monday 3:00 AM
System.out.print("\r\n" + c.getTime().toString());

// compute number of millis until Monday
long millisInMonday = c.getTimeInMillis();
long millisToMonday = millisInMonday - millisNow;

// convert millis to sec
long secondsToMonday = millisToMonday / 1000;

System.out.print(String.format("\r\nSeconds Until Monday: %d", secondsToMonday));

}

以下是 Android Studio 中的 ExampleUnitTest 的输出:

Sat Oct 06 09:41:54 WEST 2018
Mon Oct 08 03:00:00 WEST 2018
Seconds Until Monday: 148686

只需根据您的需要调整方法,例如:

public long computeSecondsToMonday(){
···
return secondsToMonday;
}

希望这是您所需要的。

关于java - Android:如何获取从现在到下周一凌晨 3 点的时间(以秒为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52676913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com