2017-03-03 77 views
1

我想通过减去然后将毫秒除以天来比较两个日期,但是这每次返回-5479。我的语法有什么问题吗?我不知道为什么会发生这种情况。日期比较不起作用

if (task_date_view != null) { 
    Date current_date = new Date(); 
    String myFormat = "MM/dd/yy"; 
    DateFormat dateFormat = new SimpleDateFormat(myFormat); 
    Date temp_date; 
    try { 
     temp_date = dateFormat.parse(list_task.getDate()); 
     long difference = temp_date.getTime() - current_date.getTime(); 
     long diffDays = difference/(24 * 60 * 60 * 1000); 
     String date_string = Long.toString(diffDays); 
     task_date_view.setText(date_string + " days left."); 

    } catch (ParseException e) { 
     task_date_view.setText("No days left."); 
    } 

} 
+0

可能的重复[如何在Java中比较日期?](http://stackoverflow.com/questions/2592501/how-to-compare-dates-in-java) – Rao

+0

您的输入和预期输出是什么? – shmosel

+1

*将毫秒分为几小时* - 您的意思是几天? – shmosel

回答

2

我认为最有可能的,如果你在过去比较的日期(例如,剩余许可证的时间),你得到一个负的,因为这是倒退:

temp_date.getTime() - current_date.getTime() 

如何这个获得差异天:

long end = endDate.getTime(); 
long start = startDate.getTime(); 
int daysDiff = TimeUnit.MILLISECONDS.toDays(Math.abs(end - start)); 

如果你想从现在的时间差,然后使用:

long start = System.currentTimeInMillis(); 
+1

我仍然5478,但它不是负面的。我将假定我接收日期的方式有错,而不是语法。感谢您的帮助。 –

+1

鉴于shmosel的最新评论,我认为你是对的 –

+1

你认为世界上大多数人使用比美国更合乎逻辑的日期格式.... *咳嗽* dd/MM/yy? (不仅仅是紧张 - 这可能是你的格式问题) –