Java 中年月日的问题
发布网友
发布时间:2022-10-18 00:49
我来回答
共5个回答
热心网友
时间:2023-11-05 08:15
如果楼主用作应用开发..可以考虑java类库中的Date或者Calendar
如果只是研究算法可以参考下列代码
按楼主意图编写了以下代码,用MyDate存放日期.
class MyDate {
int year;
int month;
int day;
// 非闰年每月的天数
int[] days4MonthsOfNLY = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 闰年每月的天数
int[] days4MonthsOfLY = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 构造函数
MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
// 在当前日期上添加days天,返回得到的日期
MyDate addDate(int days) {
int[] days4Months = null;
if (isLeapYear(this.year)) {
days4Months = days4MonthsOfLY;
} else {
days4Months = days4MonthsOfNLY;
}
// 用于构建新对象
int newYear = year, newMonth = month, newDay = day;
if (day + days <= days4Months[month - 1]) {
// 如果n天后仍在本月
newDay = day + days;
} else {
// 如果n天后本月已经过完
days = days - (days4Months[month - 1] - day);
newMonth++;
if (newMonth > 12) {
newMonth = 1;
if (isLeapYear(++newYear)) {
days4Months = days4MonthsOfLY;
} else {
days4Months = days4MonthsOfNLY;
}
}
while (days - days4Months[newMonth - 1] > 0) {
days = days - days4Months[newMonth - 1];
newMonth++;
if (newMonth > 12) {
newMonth = 1;
if (isLeapYear(++newYear)) {
days4Months = days4MonthsOfLY;
} else {
days4Months = days4MonthsOfNLY;
}
}
}
newDay = days;
}
return new MyDate(newYear, newMonth, newDay);
}
// 判断闰年
static boolean isLeapYear(int year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
System.err.println("润:" + year);
return true;
} else
return false;
}
// 覆写toString方法
@Override
public String toString() {
return "[" + year + "-" + month + "-" + day + "]";
}
}
public class DateAnalyzer {
public static void main(String[] args) {
// 用于测试程序
MyDate date = new MyDate(1980, 2, 28);
System.err.println(date.addDate(32));
}
}
热心网友
时间:2023-11-05 08:15
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class A {
public static void main(String[] args) {
Calendar g = GregorianCalendar.getInstance();
g.set(Calendar.YEAR, 1980);
g.set(Calendar.MONTH, 10-1);
g.set(Calendar.DAY_OF_MONTH, 10);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(sdf.format(g.getTime()));
//指定你增加的天数
g.add(Calendar.DAY_OF_MONTH, 10);
sdf = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(sdf.format(g.getTime()));
}
}
热心网友
时间:2023-11-05 08:16
你直接每种情况都考虑。。闰年,每月几天接着所有的相加就行了。
热心网友
时间:2023-11-05 08:16
java中的Calendar类有相应的函数。
不用自己写太多的东西。
热心网友
时间:2023-11-05 08:17
Calendar类。见参考资料
参考资料:http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/Calendar.html