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?
Obtenez la date d'aujourd'hui en tant que Calendar
.
Ajoutez 1 jour à cela.
Format à des fins d'affichage.
Par exemple,
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
// now do something with the calendar
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
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.
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
vous devez ajouter seulement 1 dans votre jour de calendrier.
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
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);
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 );
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);
Obtenez la date du jour en utilisant le calendrier, puis ajoutez-y un jour.
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(" "));
}
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!!
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()));
}
Essayez comme ça ..
dayat = gc.add(Calendar.DATE, 1);
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;
}
Java.time.LocalDate.now()
.plusDays( 1 )
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 ) ;
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
.
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?