0

好吧,我很难理解在这种情况下我会做什么。我指定了一个当前日期,该日期获取执行特定操作的日期,然后我需要指定完成日期,因此该方法将知道何时完成处理。

public void process() {
    currentDate = getCurrentDate();

    String dateStart = lotteryStart;
    String dateStop = getCurrentDate().toString();

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm");

Date d1 = null;
Date d2 = null;

try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    DateTime dt1 = new DateTime(d1);
    //DateTime dt2 = dt1.plusMinutes(10);
    DateTime dt2 = new DateTime(d2);
    sendMessage(Integer.toString(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60));
    if (dt2 == dt1.plusMinutes(1)) {
    //sendMessage(Integer.toString(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60));
    //if (Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 == 500) {
        durationReached = true;
    }

    } catch (Exception e) { e.printStackTrace(); }

}

我将如何确定结束日期,即开始日期之前的特定时间?例如,如果开始日期为 06/10/2013 23:02,则结束日期为 06/10/2013 23:05

它完全无视

if (dt2 == dt1.plusMinutes(1)) {

除了时间越来越细。

我不知道如何设置这个结束日期。任何帮助表示赞赏。

4

1 回答 1

0

1) DateTime是不可变的,因此当您使用时,dt1.plusMinutes(1)实例dt1不会更改。
的新实例DateTime已创建。因此,您应该将新实例分配给dt1.

DateTime dt1 = new DateTime(d1).plusMinutes(1);
DateTime dt2 = new DateTime(d2); 

2)不要将日期与 进行比较==,而应使用Object::equals(Object)

if (dt2.equals(dt1)) {

编辑
有更简单的方法来解析DateTime没有java.util.Dateand SimpleDateFormat,使用
DateTimeFormatterDateTimeFormat

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm");
DateTime dt1 = dtf.parse(dateAsString);
于 2013-10-07T06:31:41.853 回答