gpt4 book ai didi

Java 公历输出错误的日期

转载 作者:行者123 更新时间:2023-12-02 13:22:52 25 4
gpt4 key购买 nike

我正在做一个公历项目,我必须打印从今天开始的 100 天以及我生日的星期几。程序显示一天,但日期错误。你们能帮我解决这个问题吗?谢谢!

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

这是 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;
}
}

最佳答案

tl;博士

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.

详细信息

麻烦的 Calendar 类现在已被遗留,被 java.time 类取代。

您想在今天之后添加一百天。

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

您想要今年生日的星期几。

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

您需要月份名称和星期几名称。让 java.time 自动为您本地化。

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

关于Java 公历输出错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com