2016-02-18 69 views
1

我試圖比較當前的日期和時間與解析日期和時間。我希望查詢僅返回未結束的事件,因爲它們的註冊週期將是它們的「結束」日期。但由於某種原因,我的參數不起作用的代碼是以下內容:Android比較當前日期到解析查詢日期

String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());// gets current date and time 


    query.whereGreaterThanOrEqualTo("end", currentDateTimeString);// should compare the dates and if the end date is past the current moment and time of this query not display that event 
+0

請說明您實際遇到的問題。什麼信息或不正確的行爲正在發生?實際比較失敗的地方在哪裏?顯示該代碼並調試或記錄指示失敗的信息。你上面顯示的只是給你的'ParseQuery'對象添加一個約束。你究竟在哪裏評估查詢的結果? – rothloup

回答

2

只是使用日期的確如果一個字符串。解析日期列與日期相當。

query.whereGreaterThanOrEqualTo("end", new Date()); 
+0

所以這個只需要當前日期? – Ace

+0

是新的Date()總是返回當前日期+時間 – Manu

1

您可以使用喬達時間庫。 See the example below

LocalDate startDate = new LocalDate(2014, 1, 2); 
LocalDateTime startDateTime = new LocalDateTime(2014, 1, 2, 14, 0); 
LocalDate forCompare = startDateTime.toLocalDate(); 
System.out.println("equal dates: " + forCompare.equals(startDate)); 
1

嘗試類似這樣的事情。發送DateChecker函數一個日期,如果該日期在當前日期之前返回true。如果它不返回false。

public bool DateChecker(DateTime dt){ 
    if(DateTime.Now.Day<=dt.Day && DateTime.Now.Month<=dt.Month && DateTime.Now.Year<=dt.Year)){ 
     return true; 
    } 
    else{ 
     return false; 
    } 
} 
//BELOW CODE GOES IN A DIFFERENT FUNCTION 
DateTime? dt; 
var yourQuery = ParseObject.GetQuery ("YourClass"); 
yourQuery.FindAsync().ContinueWith (task => { 
if(!task.IsCompleted){ 
    return; 
} 
if(task.IsCompleted){ 
    IEnumerable<ParseObject> results = task.Result; 
    foreach(ParseObject result in results){ 
     string oid = ""; 
     if(result.ObjectId!=null){ 
      oid = result.ObjectId; 
     }else{ 
      oid = "1337"; 
     } 
     dt = result.("YourDateColumn in parse"); 
     DateTime tmpDate; 
     tmpDate = dt ?? DateTime.Now; 
     if (tmpDate.Year == DateTime.Now.Year && tmpDate.Month == DateTime.Now.Month && DateChecker (tmpDate)) { 
      //adds items for this time period only 
     } 
    } 
} 

});