问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
神九返回后轨道舱分离去哪里了,是在轨道继续运行,还是不管了。天宫一... 空间站通常由对接舱、气闸舱、轨道舱、生活舱、服务舱、专用设备... 为什么不让神舟七号的轨道舱留在天上让神州八号去追? 洗衣机生产厂家 狗鱼好吃吗? 洪霞的爷爷知识很丰富,你能用哪些成语来形容他 用什么成语可以形容包罗各种各样的想法 什么万千的成语有哪些 重庆哪些考研大学 重庆师范大学考研好不好考 杭州师范大学考研难吗 杭州师范大学考研要求专业一致吗 晚上和老公一起睡的很好,他早上出门我再睡就一直做噩梦,每天做怎么回事? 为什么和刚处的男朋友在一起会连续做噩梦 我男朋友和我在一起后,晚上老是做噩梦 自从和男友认识后每天晚上做噩梦是什么原因 贵州遵义到河北石家庄要多久。 从石家庄去本溪坐火车得多少钱汽车多少钱!? 石家庄到桐梓县有多少公里需要多少钱的路费过道费 河北燕达医院到遵义火车多少公里? 石家庄到遵义多少公里 不求暴富,只求能够稳定收入,怎么买指数基金风险最小? 按查字典要求填写:无忧无虑的虑的音序、音节、部首、词语中的意思,再组一个词 java游戏编程1A2B是一款十分经典的猜数字游戏,每局开始,计算机都会随机生成四个数字? 虑先查()字母,再查()音节,“虑”是()结构的字, 俗语“五人三姓莫走路”,下一句是什么? 游武夷山优秀作文 无忧无虑的虑字的音节是什么 六月初六下雨有一句谚语 有一句谚语是说一个人不行两个人行的是什么 这个用java输入年月日信息,输出这天是这年的第几天怎么写啊? 天地之间有杆秤,是什么意思? JAVA 用一个字符串比较 获得当前时间 芯片封测:半导体国产化最成熟环节 JAVA中提前当前时间点的方法 qq三国北山决战怎么进 qq三国汉水激战时间 请问QQ三国这几个52FB任务具体怎么做? QQ三国最终决战任务 QQ三国汗水徽记怎么使用 A股票现在的价格是20元,分红方案是10送5转5派1,除权除息后股价是多少?麻烦也写出计算式。谢谢 你好,我想问问股票除息对股东有什么的影响,如果我在除权登记日日前买的股票,是20块,假如除息后股价 在相亲平台一对上上传的照片怎样撤回来 幼儿园小班班主任工作计划02 肝肿大就是肝炎吗,所有肝病患者肝脏都有肿大吗? 矩阵计算的作者简介 矩阵计算方法法则 求10000以内游戏台式电脑配置 我想花10000左右装一台游戏台式机。最好是性能好,至少能带起使命召唤8 有没有专门玩游戏的台式机价格在10000——30000的