2017-04-20 3 views
0

ich arbeite an einem Gregorianischen Kalenderprojekt, wo ich 100 Tage von heute und Wochentag meines Geburtstages drucken muss. Das Programm zeigt einen Tag an, ist jedoch der falsche Tag. Könnt ihr mir bei dem Problem helfen? Vielen Dank! HierJava Gregorianische Kalenderausgabe falsches Datum

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); 

ist die 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

Es könnte sein, weil Sie den 'GregorianCalendar' mit 2012 als Jahr initialisieren. Was gibt es aus und was erwarten Sie? –

+0

Das ist das Datum, das ich einlege, um den Wochentag zu bekommen und ich erwarte Sonntag, aber ich bekomme Mittwoch statt – Tim

+0

Kannst du deine 'utils # getWeekday' Methode posten? Es ist höchstwahrscheinlich falsch. –

Antwort

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. 

Einzelheiten

Die lästige Calendar Klasse ist jetzt Vermächtnis, durch die java.time Klassen verdrängte.

Sie möchten einhundert Tage nach heute hinzufügen.

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

Sie möchten den Wochentag Ihres Geburtstages in diesem Jahr.

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

Sie möchten den Namen des Monats und den Namen des Wochentags. Lassen Sie java.time automatisch für Sie lokalisieren.

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

Ich nehme an, Sie möchten den 1. Januar 2012 als Geburtstag eingeben? Die die richtige Linie wäre:

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

oder besser:

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

Der Monat ist Null basiert (0 = Januar, 1 = Februar, ...). Und dies ergibt die Ausgabe: Wochentag meines Geburtstages: Sonntag