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