2016-09-28 4 views
1

Hier finde ich den Unterschied zwischen dem eingegebenen Datum und dem aktuellen Datum. Ich meine, ich versuche das Nein der Tage zwischen zwei Dates zu finden. Wenn beide Daten im selben Monat sind, erhalte ich korrekten Wert, wenn die Daten in verschiedenen Monaten liegen, der Differenzwert ist falsch. Ich werde nicht verstehen, wie ich das beheben soll.Unterschied zwischen aktuellem Datum und eingegebenem Datum in Android

kann mir jemand bitte helfen, dieses zu bekommen?

Dies ist mein Code:

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); 
    } 
    } 
} 

Hier wird das eingegebene Datum ist „2016.08.24“ und das aktuelle Datum „2016.09.28“. Ich bekomme 4 als Ergebnis, das ist falsch. Ich glaube, ich habe Kalender verwenden oder something.but nicht genaue Art und Weise bekommt, dass man zu tun ..

+0

diesen Link sehen http://stackoverflow.com/questions/21285161/android-difference-between-two-dates –

+0

Ich verwende dieses Format MM/TT/JJJJ .. und ich verwende nicht hh: mm: ss..aber in diesem Link berechnet es Tage basierend auf Stunden..ich verwende nicht hh: mm: ss. –

Antwort

2

Nach documentation dem Buchstaben m als Minute in Stunde verstanden. Um auf den Monat zu verweisen, müssen Sie das Kapital M verwenden.

Versuchen Sie SimpleDateFormat zu, dies zu ändern:

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

nicht Datum this.Try Kalender so verwenden, um zu tun Verwenden Sie.

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

wird hineinschauen .. –

0

Ich hatte das gleiche Problem.

Änderung

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

mit verschiedenen Monaten Unterschied für Datum zu erhalten

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