2013-10-06 42 views
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(); } 

} 

我該如何做結束日期,在開始日期前的特定時間?例如,如果起始日期是2013年6月10日23:02,結束日期是2013年6月10日23:05

它完全無視

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

除時間增加罰款精細。

我不知道如何去設置這個結束日期。任何幫助表示讚賞。

+0

這會幫助你:http://stackoverflow.com/questions/1655357/how-do-i-say-5-seconds-from-now-in-java –

+0

謝謝,我已經遇到一個新的問題,並重新編寫了一些代碼。 – user1848712

回答

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

編輯
有簡單的解析DateTimejava.util.DateSimpleDateFormat方式,
DateTimeFormatterDateTimeFormat

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