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

时间:2013-09-05 06:41:22

标签: java time

我想确定当前时间何时等于定义的时间+ 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);

2 个答案:

答案 0 :(得分:2)

问题的背景有点轻松。你想使用一个帖子,你想要被警告吗??

然而,作为一个基本的例子,你可以做一些像......

// 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之前,一切都是相对的。如果没有Date部分时间,我们很难知道何时应该提高警报。 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)。

你当然可以直接比较毫秒......

答案 1 :(得分:1)

这是你想做的吗?接下来,我就这样了。

I would like to determine when the current time equals a defined time + 15mins.

您可以按照以下方式执行以下操作

    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
    Date preDefineTime=formatter.parse("10:00");
    long additionMin=15*60*1000;
    System.out.println(formatter.format(preDefineTime.getTime()+additionMin));