Android中当前日期和输入日期之间的差异

问题描述:

这里我找到输入日期和当前日期之间的差异。我的意思是我试图找到两个日期之间的天数。如果两个日期都在同一个月内,如果日期在不同的月份,我会得到正确的值,但差异值不正确。我没有得到如何纠正这一问题。Android中当前日期和输入日期之间的差异

任何人都可以帮助我得到这个吗?

这是我的代码:

public class MyService extends Service { 

    String dayDifference; 

    NotificationManager manager; 
    Notification myNotication; 

    @Override public IBinder onBind(Intent intent) { 
    return null; 
    }//End of onBind method 

    public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    try { 

     //Dates to compare 
     String CurrentDate; 
     String FinalDate = "08/24/2016"; 

     Date date1 = new Date(); 
     Date date2; 

     SimpleDateFormat dates = new SimpleDateFormat("mm/dd/yyyy"); 

     //Setting dates 
     date1.setTime(System.currentTimeMillis()); 
     CurrentDate = dates.format(date1); 
     date2 = dates.parse(FinalDate); 
     date1 = dates.parse(CurrentDate); 

     //Comparing dates 
     long difference = Math.abs(date1.getTime() - date2.getTime()); 
     long differenceDates = difference/(24 * 60 * 60 * 1000); 

     //Convert long to String 
     dayDifference = Long.toString(differenceDates); 

     Log.e("HERE.................", "HERE: " + dayDifference); 
     System.out.println("..............difference date " + dayDifference); 

     Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     Intent targetIntent = new Intent(this, Mnst.class); 

     PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, targetIntent, 0); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 

     builder.setAutoCancel(true); 
     builder.setTicker("Predictor"); 
     builder.setContentTitle("Miisky Notification"); 

     builder.setContentText(
      "You have " + dayDifference + " days left. Click on notification to know more.."); 
     builder.setSmallIcon(R.drawable.miilogo); 
     builder.setSound(soundUri); 
     builder.setContentIntent(pendingIntent); 
     builder.setOngoing(true); 
     //builder.setSubText("Your vault number is " + s.vault_no); //API level 16 
     builder.setNumber(100); 

     builder.build(); 

     //noinspection deprecation 
     myNotication = builder.getNotification(); 
     builder.setAutoCancel(true); 
     manager.notify(11, myNotication); 

     Toast.makeText(getApplicationContext(), " " + dayDifference + " Days Left ", 
      Toast.LENGTH_LONG).show(); 
    } catch (Exception exception) { 
     Log.e("DIDN'T WORK............", "exception " + exception); 
    } 
    } 
} 

这里输入的日期是“2016年8月24日”和当前日期是“2016年9月28日”。我得到4结果是不正确的。我认为我必须使用日历或东西,但没有得到确切的方式来做那个..

+0

看到这个链接http://*.com/questions/21285161/android-difference-between-two-dates –

+0

我使用这种格式mm/dd/yyyy ..并且我没有使用hh:mm:ss ..但是在那个链接中,它计算基于小时数的天..我没有使用hh:mm:ss。 –

根据documentationm被理解为小时分钟。为了引用月份,您需要使用大写M

尝试改变你的SimpleDateFormat这样:

SimpleDateFormat dates = new SimpleDateFormat("MM/dd/yyyy"); 

不要使用日期做this.Try使用日历这样。

public static final int diffOfDay(Date d1,Date d2){ 
    Calendar c1 = Calendar.getInstance(); 
    c1.setTime(d1); 

    Calendar c2 = Calendar.getInstance(); 
    c2.setTime(d2); 

    return c1.get(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH); 
} 
+0

将调查它.. –

我有同样的问题。

变化

return c1.get(Calendar.DAY_OF_MONTH) - c2.get(Calendar.DAY_OF_MONTH); 

以获取日期的差异与不同的月份

return c1.get(Calendar.DAY_OF_YEAR) - c2.get(Calendar.DAY_OF_YEAR);