尝试解析结束日期时出错

时间:2013-10-06 22:03:37

标签: java date datetime jodatime simpledateformat

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

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)) {

除了时间越来越精细。

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

1 个答案:

答案 0 :(得分: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.DateSimpleDateFormat的情况 DateTimeFormatterDateTimeFormat

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm");
DateTime dt1 = dtf.parse(dateAsString);