web-dev-qa-db-fra.com

Android comment obtenir la date de demain

Dans mon application Android. Je dois afficher la date de demain, par exemple aujourd'hui, le 5 mars, donc le 6 mars. Je connais le code pour obtenir la date, le mois et l'année d'aujourd'hui.

date de calcul

    GregorianCalendar gc = new GregorianCalendar();
    yearat = gc.get(Calendar.YEAR);
    yearstr = Integer.toString(yearat);
    monthat = gc.get(Calendar.MONTH) + 1;
    monthstr = Integer.toString(monthat);
    dayat = gc.get(Calendar.DAY_OF_MONTH);
    daystr = Integer.toString(dayat);

Si j'ai le code

dayat = gc.get(Calendar.DAY_OF_MONTH) + 1;

affichera-t-il la date de demain? ou juste en ajouter un à la date d'aujourd'hui? Par exemple, si nous sommes le 31 janvier, avec le code ci-dessus, sera-t-il affiché comme 1 ou 32? S'il affiche 32, quel changement dois-je effectuer?

25
Jocheved
  1. Obtenez la date d'aujourd'hui en tant que Calendar.

  2. Ajoutez 1 jour à cela.

  3. Format à des fins d'affichage.

Par exemple,

GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
// now do something with the calendar
46
laalto

Utilisez le code suivant pour afficher la date de demain

Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();

calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();

Utilisez SimpleDateFormat pour formater la date en tant que chaîne:

DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");

String todayAsString = dateFormat.format(today);
String tomorrowAsString = dateFormat.format(tomorrow);

System.out.println(todayAsString);
System.out.println(tomorrowAsString);

Impressions:

05-Mar-2014
06-Mar-2014
38

Java.util.Date et Java.util.Calendar sont terribles à travailler. Je suggère que vous utilisiez JodaTime qui a une API beaucoup plus propre/plus jolie. JodaTime est assez standard ces jours-ci.

http://www.joda.org/joda-time/#Why_Joda-Time

Notez que JDK 8 introduira une nouvelle API de date/heure fortement influencée par JodaTime.

4
lance-java
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();

calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
4
Pararth

vous devez ajouter seulement 1 dans votre jour de calendrier.

GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
4
Piyush

Autres options:

Calendar tomorrow = Calendar.getInstance();
tomorrow.roll(Calendar.DATE, true);

ou

tomorrow.roll(Calendar.DATE, 1);

roll peut également être utilisé pour remonter le temps en passant un nombre négatif, par exemple

Calendar yesterday = Calendar.getInstance();
yesterday.roll(Calendar.DATE, -1);
3
Alberto Malagoli

Les classes Java.util.Date et .Calendar sont notoirement gênantes. Évite-les. Utilisez plutôt la bibliothèque Joda-Time ou le nouveau package Java.time avec Java 8 .

Quelques exemples de code utilisant la bibliothèque Joda-Time 2.3.

DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime now = new DateTime( timeZone );
DateTime tomorrow = now.plusDays( 1 );
String output = DateTimeFormat.forPattern( "FF" ).withLocale(Locale.FRANCE).print( tomorrow );
2
Basil Bourque

les premières réponses couvrent à peu près toutes les possibilités… mais voici une autre solution que vous pouvez utiliser depuis org.Apache.commons.lang.time:

Date lTomorrow = DateUtils.addDays(new Date(), 1);
2
Stefan Beike

Obtenez la date du jour en utilisant le calendrier, puis ajoutez-y un jour.

1
roshanpeter

Le meilleur moyen de régler le lendemain est

 public void NextDate()
{

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

    // set current date into textview
    e_date.setText(new StringBuilder()
            // Month is 0 based, just add 1
            .append(mDay+1).append("-").append(mMonth + 1).append("-")
            .append(mYear).append(" "));



}
0
Kunal Nikam

Cela fonctionne bien pour moi!

    Date currentDate = new Date();// get the current date
    currentDate.setDate(currentDate.getDate() + 1);//add one day to the current date
    dateView.setText(currentDate.toString().substring(0, 10));// put the string in specific format in my textView

bonne chance!!

0
yoc
 String  lastDate="5/28/2018";
        Calendar calendar = Calendar.getInstance();
        String[] sDate=lastDate.split("/");
        calendar.set(Integer.parseInt(sDate[2]),Integer.parseInt(sDate[0]),Integer.parseInt(sDate[1]));

        DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");

//        String todayAsString = dateFormat.format(today);

        for (int i=1;i<29;i++)
        {
            calendar.add(Calendar.DAY_OF_YEAR,1);
//            td[i].setText(dateFormat.format(calendar.getTime()));
          System.out.println(dateFormat.format(calendar.getTime()));  
        }
0
pruthwiraj.kadam

Essayez comme ça ..

dayat = gc.add(Calendar.DATE, 1);
0
Naveen
Just call this method and send date from which you want next date     

public String nextDate(Date dateClicked) {
           // 
String next_day;
calander_view.setCurrentDayTextColor(context.getResources().getColor(R.color.white_color));
            //calander_view.setCurrentDayBackgroundColor(context.getResources().getColor(R.color.gray_color));
            SimpleDateFormat dateFormatForDisplaying = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
            String date_format = dateFormatForDisplaying.format(dateClicked);
            SimpleDateFormat simpleDateformat = new SimpleDateFormat("E"); // the day of the week abbreviated
            final Calendar calendar = Calendar.getInstance();
            try {
                Date date = dateFormatForDisplaying.parse(date_format);
                calendar.setTime(date);
                calendar.add(Calendar.DATE, 1);
                String nex = dateFormatForDisplaying.format(calendar.getTime());
                Date d1 = dateFormatForDisplaying.parse(nex);
                String day_1 = simpleDateformat.format(d1);
                next_day = nex + ", " + day_1;
            } catch (ParseException e) {
                e.printStackTrace();
            }

            return next_day;

        }
0
Mohit Hooda

tl; dr

Java.time.LocalDate.now()
                   .plusDays( 1 ) 

Java.time

Toutes les autres réponses sont obsolètes, en utilisant les anciennes classes gênantes Date & Calendar ou le projet Joda-Time qui est maintenant en mode maintenance. L'approche moderne utilise les classes Java.time.

LocalDate

La classe LocalDate représente une valeur de date uniquement sans heure et sans fuseau horaire.

Un fuseau horaire est crucial pour déterminer une date. Pour un moment donné, la date varie dans le monde entier par zone. Par exemple, quelques minutes après minuit dans Paris France est un nouveau jour alors qu’il est encore «hier» dans Montréal Québec .

Si aucun fuseau horaire n'est spécifié, la machine virtuelle Java applique implicitement son fuseau horaire par défaut actuel. Ce défaut peut changer à tout moment, vos résultats peuvent donc varier. Il est préférable de spécifier explicitement votre fuseau horaire souhaité/attendu en tant qu'argument.

Spécifiez un nom du fuseau horaire } au format continent/region, tel que America/Montreal , Africa/Casablanca ou Pacific/Auckland. N'utilisez jamais les abréviations de 3-4 lettres telles que EST ou IST car elles sont pas des fuseaux horaires véritables, non standardisés et même pas uniques (!). 

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;

A partir de cette LocalDate, vous pouvez faire des calculs pour obtenir le lendemain.

LocalDate tomorrow = today.plusDays( 1 ) ;

Les cordes

Pour générer une chaîne représentant la valeur de l’objet LocalDate, appelez toString pour le texte mis en forme conformément à la norme ISO 8601 : YYYY-MM-DD

Pour générer des chaînes dans d'autres formats, recherchez Stack Overflow pour DateTimeFormatter .


À propos de Java.time

Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes gênantes héritées _ date-heure telles que Java.util.Date , Calendar _, & SimpleDateFormat .

Le projet Joda-Time , désormais en mode maintenance , conseille de migrer vers les classes Java.time .

Pour en savoir plus, consultez le Tutoriel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .

Où obtenir les classes Java.time? 

  • Java SE 8 , Java SE 9 et versions ultérieures
    • Intégré. 
    • Une partie de l'API Java standard avec une implémentation fournie.
    • Java 9 ajoute quelques fonctionnalités et corrections mineures.
  • Java SE 6 et Java SE 7
    • Une grande partie de la fonctionnalité Java.time est rétroportée vers Java 6 et 7 dans ThreeTen-Backport .
  • Android
    • Les versions ultérieures d'Android regroupent des implémentations des classes Java.time.
    • Pour les versions antérieures d'Android, le projet ThreeTenABP s'adapte ThreeTen-Backport (mentionné ci-dessus). Voir Comment utiliser ThreeTenABP… .
0
Basil Bourque