簡體   English   中英

當前日期與Android中輸入日期之間的差異

[英]Difference between current date and entered date in 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);
    }
  }
}

此處輸入的日期為“ 08/24/2016”,當前日期為“ 09/28/2016”。 我得到4作為不正確的結果。 我想我必須使用Calendar或其他方法。但是沒有確切的方法來執行該操作。

根據文檔 ,字母m被理解為分鍾。 為了引用月份,您需要使用大寫M

嘗試將您的SimpleDateFormat更改為此:

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

不要使用日期來執行此操作。嘗試使用這樣的日歷。

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

我遇到過同樣的問題。

更改

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM