Java-每周定期日历倒计时

Java-每周定期日历倒计时,java,calendar,reset,recurring-events,Java,Calendar,Reset,Recurring Events,我正在尝试制作一个倒计时计时器,每周(星期一东部时间上午10点)重置一次。我发现了一些类似于我正在寻找的东西,但它不会自行重置;这是消极的。有人能帮我把它修好吗 public static int SECONDS_IN_A_DAY = 24 * 60 * 60; public String main(String[] args) { Calendar now = Calendar.getInstance(); int year = now.get(Calendar.YEAR

我正在尝试制作一个倒计时计时器,每周(星期一东部时间上午10点)重置一次。我发现了一些类似于我正在寻找的东西,但它不会自行重置;这是消极的。有人能帮我把它修好吗

public static int SECONDS_IN_A_DAY = 24 * 60 * 60;

public String main(String[] args) {

    Calendar now = Calendar.getInstance();
    int year  = now.get(Calendar.YEAR);
    int month = now.get(Calendar.MONTH);

    Calendar reset = Calendar.getInstance();
    reset.setTime(new Date(0)); 
    reset.set(Calendar.DAY_OF_WEEK, 1); //2
    reset.set(Calendar.MONTH, month);
    reset.set(Calendar.YEAR, year);
    reset.set(Calendar.HOUR_OF_DAY, 0); //10
    reset.set(Calendar.MINUTE, 33);

    Calendar today = Calendar.getInstance();
    long diff =  reset.getTimeInMillis() - today.getTimeInMillis(); 
    long diffSec = diff / 1000;

    long days = diffSec / SECONDS_IN_A_DAY;
    long secondsDay = diffSec % SECONDS_IN_A_DAY;
    long seconds = secondsDay % 60;
    long minutes = (secondsDay / 60) % 60;
    long hours = (secondsDay / 3600);

    if (diff < 0) {
        reset.setTime(new Date(0)); 
        reset.set(Calendar.DAY_OF_WEEK, 1); //2
        reset.set(Calendar.MONTH, month);
        reset.set(Calendar.YEAR, year);
        reset.set(Calendar.HOUR_OF_DAY, 0); //10
        reset.set(Calendar.MINUTE, 33);
    }

    return "Reset in: " + days + " days, " + hours + " hours, " + minutes + " minutes, and " + seconds + " seconds.";
}

public void onMessageReceived(MessageReceivedEvent e) {

    if(e.getMessage().getRawContent().equalsIgnoreCase(";reset")) {
        e.getChannel().sendMessage(main(null)).queue();
    }
}    
public static int SECONDS\u IN\u A\u DAY=24*60*60;
公共字符串主(字符串[]参数){
Calendar now=Calendar.getInstance();
int year=now.get(Calendar.year);
int month=now.get(Calendar.month);
日历重置=Calendar.getInstance();
重置。设置时间(新日期(0));
reset.set(Calendar.DAY/u周,1);//2
重置.设置(日历.月,月);
重置。设置(日历年、年份);
reset.set(Calendar.HOUR,OF_DAY,0);//10
重置。设置(日历分钟,33);
Calendar today=Calendar.getInstance();
long diff=reset.getTimeInMillis()-今天。getTimeInMillis();
长diffSec=diff/1000;
长天数=diffSec/秒(以天为单位);
long secondsDay=diffSec%秒(在一天内);
长秒=第二个星期四%60;
长分钟=(第二个星期四/60)%60;
长时间=(第二个星期四/3600);
如果(差异<0){
重置。设置时间(新日期(0));
reset.set(Calendar.DAY/u周,1);//2
重置.设置(日历.月,月);
重置。设置(日历年、年份);
reset.set(Calendar.HOUR,OF_DAY,0);//10
重置。设置(日历分钟,33);
}
返回“重置时间:“+天+”天、“+小时+”小时、“+分钟+”分钟和“+秒+”秒。”;
}
MessageReceived(MessageReceivedEvent e)上的公共无效{
如果(如getMessage().getRawContent().equalsIgnoreCase(“;重置”)){
e、 getChannel().sendMessage(主(空)).queue();
}
}    
我不知道如何使这个复位一旦达到复位时间。非常感谢您的帮助。我已经5年多没有编码了

如果时间已过,下面是输出的屏幕截图

谢谢


更新:我发现最好的方法是使用
reset.add
reset
日历中添加7天。但是,我们还不能满足实现这一目标的适当条件。我尝试了
重置。与(今天)
以及其他一些组合不起作用,但正在进行中。

每次尝试都失败了。。。这不是我们可以帮助的描述。请读。我不是安卓专家,但我相信将来一定会有更好的方法来触发功能。我不能让它返回一个负面结果,但如果
diff
是负面的,如果
reset
日期早于
今天
,那么所有其他计算值都是负面的,也是。每次尝试都失败了。。。这不是我们可以帮助的描述。请读。我不是安卓专家,但我相信将来一定会有更好的方法来触发功能。我不能让它返回一个负面结果,但如果
diff
是负面的,如果
reset
日期早于
今天
,那么所有其他计算的值也将是负面的。