2017-04-20 3 views
0

im travaillant sur un projet de calendrier grégorien où je dois imprimer 100 jours à compter d'aujourd'hui et le jour de la semaine de mon anniversaire. Le programme affiche un jour, mais c'est le mauvais jour. pourriez-vous m'aider avec le problème? Merci!Java calendrier grégorien sortie de la mauvaise date

import java.util.GregorianCalendar; 
public class Gregorian { 

    public static void main(String[] args) 
    { 
     Day today = new Day(); 
      System.out.print("Today: "); 
      System.out.println(today.toString()); 

     GregorianCalendar Date = new GregorianCalendar(); 
     Date.add(GregorianCalendar.DAY_OF_MONTH, 100); 
     CalendarUtils utils = new CalendarUtils(); 
     String day = utils.getWeekday(Date.get(GregorianCalendar.DAY_OF_WEEK)); 

     int year=Date.get(GregorianCalendar.YEAR); 
     int month=Date.get(GregorianCalendar.MONTH); 
     int dayof=Date.get(GregorianCalendar.DAY_OF_MONTH); 

     System.out.println("100 days from today: " + year + "/" + month + "/" + dayof + " which is a: " + day); 


     GregorianCalendar Birthday = new GregorianCalendar(2012,1,1); 
     String Bday = utils.getWeekday(Birthday.get(GregorianCalendar.DAY_OF_WEEK)); 
     System.out.println("Weekday of my Birthday: " + Bday); 

     Birthday.add(GregorianCalendar.DAY_OF_MONTH, 10000); 

     int Byear=Birthday.get(GregorianCalendar.YEAR); 
     int Bmonth=Birthday.get(GregorianCalendar.MONTH); 
     int Bdayof=Birthday.get(GregorianCalendar.DAY_OF_MONTH); 

     System.out.println("10000 days from my Birthday: " + Byear + "/" + Bmonth + "/" + Bdayof); 

Voici les CalendarUtils

import java.util.GregorianCalendar; 
public class CalendarUtils 
{ 
    /** 
     Returns the String for GregorianCalendar DAY_OF_WEEK 
    */ 
    public String getWeekday(int day_of_week) 
    { 
     String day = ""; 

     if (day_of_week == GregorianCalendar.SUNDAY) 
     { 
     day = "Sunday"; 
     } 
     else if (day_of_week == GregorianCalendar.MONDAY) 
     { 
     day = "Monday"; 
     } 
     else if (day_of_week == GregorianCalendar.TUESDAY) 
     { 
     day = "Tuesday"; 
     } 
     else if (day_of_week == GregorianCalendar.WEDNESDAY) 
     { 
     day = "Wednesday"; 
     } 
     else if (day_of_week == GregorianCalendar.THURSDAY) 
     { 
     day = "Thursday"; 
     } 
     else if (day_of_week == GregorianCalendar.FRIDAY) 
     { 
     day = "Friday"; 
     } 
     else if (day_of_week == GregorianCalendar.SATURDAY) 
     { 
     day = "Saturday"; 
     } 

     return day; 
    } 

    /** 
     Returns the string of GregorianCalendar MONTH 
    */ 
    public String getMonth(int month) 
    { 
     String monthStr = ""; 

     if (month == GregorianCalendar.JANUARY) 
     { 
     monthStr = "January"; 
     } 
     else if (month == GregorianCalendar.FEBRUARY) 
     { 
     monthStr = "February"; 
     } 
     else if (month == GregorianCalendar.MARCH) 
     { 
     monthStr = "March"; 
     } 
     else if (month == GregorianCalendar.APRIL) 
     { 
     monthStr = "April"; 
     } 
     else if (month == GregorianCalendar.MAY) 
     { 
     monthStr = "May"; 
     } 
     else if (month == GregorianCalendar.JUNE) 
     { 
     monthStr = "June"; 
     } 
     else if (month == GregorianCalendar.JULY) 
     { 
     monthStr = "July"; 
     } 
     else if (month == GregorianCalendar.AUGUST) 
     { 
     monthStr = "August"; 
     } 
     else if (month == GregorianCalendar.SEPTEMBER) 
     { 
     monthStr = "September"; 
     } 
     else if (month == GregorianCalendar.OCTOBER) 
     { 
     monthStr = "October"; 
     } 
     else if (month == GregorianCalendar.NOVEMBER) 
     { 
     monthStr = "November"; 
     } 
     else if (month == GregorianCalendar.DECEMBER) 
     { 
     monthStr = "December"; 
     } 

     return monthStr; 
    } 
} 
+0

Il se peut que vous initialisiez 'GregorianCalendar' avec 2012 comme année. Qu'est-ce que cela produit et qu'attendez-vous? –

+0

thats la date que j'ai mis pour obtenir le jour de la semaine et je m'attends dimanche mais je reçois mercredi à la place – Tim

+0

Pouvez-vous poster votre 'utils # getWeekday' méthode? C'est probablement incorrect. –

Répondre

1

tl; dr

LocalDate.now()   // Determine current date (no time-of-day) for the JVM’s current default time zone. 
    .plusDays(100)  // Add days. 
    .getDayOfWeek()  // Get `DayOfWeek` enum object. 
    .getDisplayName(FormatStyle.FULL , Locale.ITALY) // Generate a string of the name of this day-of-week automatically localized with a certain length/abbreviation. 

Détails

La classe Calendar problématique est maintenant héritage, supplanté par les classes java.time.

Vous voulez ajouter une centaine de jours après aujourd'hui.

LocalDate today = LocalDate.now(); 
LocalDate hundred = today.plusDays(100); 

Vous voulez le jour de la semaine de votre anniversaire cette année.

MonthDay birthday = MonthDay.of(Month.JANUARY , 23); 
LocalDate birthdayThisYear = birthday.atYear(today.getYear()); 
DayOfWeek dow = birthdayThisYear.getDayOfWeek(); 

Vous voulez le nom du mois et le nom du jour de la semaine. Laissez java.time se localiser automatiquement pour vous.

Locale locale = Locale.CANADA_FRENCH ; // Or Locale.US, etc. 
String m = today.getMonth().getDisplayName(TextStyle.FULL , locale); 
String d = dow.getDisplayName(TextStyle.FULL , locale); 
0

Je suppose que vous voulez entrer le 1er janvier 2012 comme date de naissance? La ligne correcte serait:

GregorianCalendar Birthday = new GregorianCalendar(2012, 0, 1); 

ou mieux:

GregorianCalendar Birthday = new GregorianCalendar(2012, Calendar.JANUARY, 1); 

Le mois est basé zéro (0 = Janvier, 1 = Février, ...). Et il en résulte dans la sortie: Jour de la date de mon anniversaire: Dimanche