41 votes

Comment ajouter des jours à la date dans Android

Dans ma base de données, j'ai une date de début au format 2011-11-30 (aaaa/mm/jj) et une date de fin au format 40 jours.

Quelqu'un peut-il m'aider ?

Merci

2voto

Ole V.V. Points 24677

Java.time

La réponse moderne à cette question se fait attendre depuis longtemps. Pensez à utiliser java.time, l'API moderne de date et d'heure de Java, pour vos travaux sur les dates.

    DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/uuuu");
    int durationDays = 40;

    LocalDate startDate = LocalDate.parse("2011-11-30");
    LocalDate newDate = startDate.plusDays(durationDays);

    String formattedDate = newDate.format(outputFormatter);
    System.out.format(formattedDate);

La sortie est :

01/09/2012

Question : java.time ne nécessite-t-il pas le niveau 26 de l'API Android ?

java.time fonctionne très bien sur les appareils Android anciens et récents. Il suffit d'avoir au moins Java 6 .

  • Dans Java 8 et les versions ultérieures, ainsi que sur les appareils Android les plus récents (à partir du niveau 26 de l'API), l'API moderne est intégrée.
  • Dans les Java 6 et 7 non-Android, obtenez le ThreeTen Backport, le backport des classes modernes (ThreeTen pour JSR 310 ; voir les liens en bas).
  • Sur les anciens Android, utilisez le désenfouissement ou l'édition Android de ThreeTen Backport. Ça s'appelle ThreeTenABP. Dans ce dernier cas, assurez-vous d'importer les classes de date et d'heure à partir de org.threeten.bp avec des sous-paquets.

Liens

1voto

Alex Muriithi Points 331
Calendar c = Calendar.getInstance();
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);

    // display the current date
    String CurrentDate = mYear + "/" + mMonth + "/" + mDay;

    String dateInString = CurrentDate; // Start date
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    c = Calendar.getInstance();

    try {
        c.setTime(sdf.parse(dateInString));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    c.add(Calendar.DATE, 7656);//insert the number of days you want to be added to the current date
    sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date resultdate = new Date(c.getTimeInMillis());
    dateInString = sdf.format(resultdate);

    //Display the Result in the Edit Text or Text View your Choice
    EditText etDOR = (EditText)findViewById(R.id.etDateOfReturn);
    etDOR.setText(dateInString);

0voto

Ça marche pour moi.

Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);

String CurrentDate = mYear + "/" + mMonth + "/" + mDay;
String dateInString = dob; // Select date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
c = Calendar.getInstance();
try {
c.setTime(sdf.parse(dateInString));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
c.add(Calendar.DATE, 14);    //14 dats add
sdf = new SimpleDateFormat("dd/MM/yyyy");
Date resultdate = new Date(c.getTimeInMillis());
dateInString = sdf.format(resultdate);
System.out.println(dateInString);

0voto

MasterOne Piece Points 61

Ne pas utiliser :

Calendar c = Calendar.getInstance();

Utilisez ceci à la place :

GregorianCalendar calendar =new GregorianCalendar();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.DAY_OF_MONTH , 30);

-1voto

sushant gosavi Points 1179

Il suffit de copier cette méthode pour passer les données

public static String ConvertToDate(String dateString,String inputFormater ,String outputFormater) {
        String outputText = "" ;
        try {
            SimpleDateFormat inputFormat = new SimpleDateFormat(inputFormater);
            SimpleDateFormat outputFormat = new SimpleDateFormat(outputFormater);
            Date parsed = null;
            parsed = inputFormat.parse(dateString);
            outputText = outputFormat.format(parsed);

        Log.d(TAG, "  msg : " + outputText);
        } catch (ParseException e) {
            e.printStackTrace();
            Log.e(TAG, "ERROR : " + e.getMessage());
        }
        return outputText;
    } 

Et l'appeler comme

 public static String INPUTE_JSON_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
 public static String FORMAT_FOR_JOB_APPLIED = "MMM dd, yyyy";
 String date ="2017-10-29";
 ConvertToDate(date ,DateUtils.INPUTE_JSON_DATE_FORMAT ,DateUtils.FORMAT_FOR_JOB_APPLIED);  

Vous pouvez mettre le format que vous voulez dans votre cituation.

ConvertToDate("2011-11-30","yyyy/mm/dd" ,"mm/dd/yyyy");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X