gpt4 book ai didi

java - 判断java中的当前时间是否超过预定时间15分钟

转载 作者:行者123 更新时间:2023-12-01 23:36:22 26 4
gpt4 key购买 nike

我想确定当前时间何时等于定义的时间 + 15 分钟。

这里定义的时间格式为:

private Date fajr_begins;
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
fajr_begins = new Time(formatter.parse(prayerTimes.get(0)).getTime());

到目前为止我提出的代码不起作用(我知道下面的代码很糟糕

DateTime today = new DateTime();
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");

now1 = new Time(formatter.parse(today));

Duration duration = new Duration(sunrise, now1);
System.out.println(" time to duha " + duration);

最佳答案

问题的背景有点轻。您想使用线程吗?您想收到警报吗...?

但是,作为一个基本示例,您可以执行以下操作...

// The time we want the alert...
String time = "16:00";
// The date String of now...
String date = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
try {
// The date + time to give us context
Date timeAt = sdf.parse(date + " " + time);
boolean rollOver = false;
// Determine if the time has already passed, if it has
// we need to roll the date to the next day...
if (timeAt.before(new Date())) {
rollOver = true;
}
// A Calendar with which we can manipulate the date/time
Calendar cal = Calendar.getInstance();
cal.setTime(timeAt);
// Skip 15 minutes in advance
cal.add(Calendar.MINUTE, 15);
// Do we need to roll over the time...
if (rollOver) {
cal.add(Calendar.DATE, 1);
}
// The date the alert should be raised
Date alertTime = cal.getTime();
System.out.println("Raise alert at " + alertTime);
// The timer with which we will wait for the alert...
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("duha");
}
}, alertTime);
} catch (ParseException ex) {
}

现在,在您提示日期之前,一切都是相对的。如果没有Date部分,我们很难知道什么时候应该发出警报。 日期只是帮助我们确定何时应该发出警报......

附加

上下文就是一切,例如...如果我们使用以下...

String time = "16:00";
try {
Date timeAt = new SimpleDateFormat("HH:mm").parse(time);
System.out.println(timeAt);
} catch (ParseException ex) {
ex.printStackTrace();
}

timeAt 值为 Thu Jan 01 16:00:00 EST 1970,这真的没用,时间永远是现在之前...

如果我们使用类似...的东西

String time = "16:00";
String date = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
try {
Date timeAt = new SimpleDateFormat("dd/MM/yyyy HH:mm").parse(date + " " + time);
System.out.println(timeAt);
} catch (ParseException ex) {
ex.printStackTrace();
}

timeAt 现在将是 Thu Sep 05 16:00:00 EST 2013 这为我们提供了一些now的背景信息

现在,如果我们使用 Calendar 将时间提前 15 分钟...

Calendar cal = Calendar.getInstance();
cal.setTime(timeAt);
cal.add(Calendar.MINUTE, 15);
Date checkTime = cal.getTime();
System.out.println(checkTime);

checkTime 变为 Thu Sep 05 16:15:00 EST 2013。我使用 Calendar 因为如果需要的话它会自动滚动小时和日期...

现在我们可以开始使用默认的可用 API 功能。因为毫秒极不可能匹配,所以我会犹豫做类似的事情......

Calendar watchFor = Calendar.getInstance();
watchFor.setTime(timeAt);
watchFor.set(Calendar.MILLISECOND, 0);
watchFor.set(Calendar.SECOND, 0);

Calendar now = Calendar.getInstance();
now.setTime(new Date());
now.set(Calendar.MILLISECOND, 0);
now.set(Calendar.SECOND, 0);

if (watchFor.equals(now)) {
System.out.println("Go for it...");
}

将毫秒和秒归零,这样我就可以单独比较日期和时间 (HH:mm)。

您当然也可以直接比较毫秒......

关于java - 判断java中的当前时间是否超过预定时间15分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629428/

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