2017-06-10 2 views
0

J'ai deux sélecteurs de date dans mon application (fromDate et toDate). Lorsque l'utilisateur sélectionne et définit les deux dates à partir de ces deux sélecteurs de date, je souhaite que mon application affiche automatiquement le nombre de jours entre eux dans une autre zone d'édition de texte (jours).Comment soustraire deux sélecteurs de date dans Android?

Comment puis-je le faire?

+0

Convertir la fois la date à dayOfYaer substrat puis une date à partir une autre date si jamais changer sa date une sélecteur de date. Pour cela, vous devez créer un auditeur pour chaque sélecteur de date –

Répondre

2

d'abord ajouter OnDateChangedListener pour les deux sélecteurs de date que

Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    fromDate.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { 

     @Override 
     public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) { 
      UpdateText(); 
     } 
    }); 
    toDate.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { 

     @Override 
     public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) { 
      UpdateText(); 
     } 
    }); 

Créer une fonction UPDATETEXT mettre à jour les jours EditText

private void UpdateText() { 
    Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault()); 

    localCalendar.set(fromDate.getYear(), fromDate.getMonth(), fromDate.getDayOfMonth()); 
    int day1 = localCalendar.get(Calendar.DAY_OF_YEAR); 

    localCalendar.set(toDate.getYear(), toDate.getMonth(), toDate.getDayOfMonth()); 
    int day2 = localCalendar.get(Calendar.DAY_OF_YEAR); 

    int day = day2-day1; 
    days.setText(""+day); 
} 

Note: Assurez-vous que vous importez les bons fichiers

import java.util.Calendar; 
import java.util.TimeZone; 

Programme complet

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.DatePicker; 
import android.widget.EditText; 

import java.util.Calendar; 
import java.util.TimeZone; 

public class MainActivity extends AppCompatActivity { 
    DatePicker fromDate, toDate; 
    EditText days; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     fromDate = (DatePicker) findViewById(R.id.datePicker1); 
     toDate = (DatePicker) findViewById(R.id.datePicker2); 
     days = (EditText)findViewById(R.id.Days); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     fromDate.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { 

      @Override 
      public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) { 
       UpdateText(); 
      } 
     }); 
     toDate.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() { 

      @Override 
      public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) { 
       UpdateText(); 
      } 
     }); 
    } 

    private void UpdateText() { 
     Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault()); 

     localCalendar.set(fromDate.getYear(), fromDate.getMonth(), fromDate.getDayOfMonth()); 
     int day1 = localCalendar.get(Calendar.DAY_OF_YEAR); 

     localCalendar.set(toDate.getYear(), toDate.getMonth(), toDate.getDayOfMonth()); 
     int day2 = localCalendar.get(Calendar.DAY_OF_YEAR); 

     int day = day2-day1; 
     days.setText(""+day); 
    } 
} 
+0

Merci beaucoup.Il fonctionne bien.Vous sauvez ma journée.Merci encore une fois. –