输入年或月自动生成开始和结束时间

本文介绍了一种通过输入四位或六位数字代码自动生成对应年份或月份的时间范围的方法。具体包括如何判断输入的有效性,如何根据年份生成整年的起始和结束日期,以及如何进一步细分到每个月并为每个月生成准确的起始和结束日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目的计划周期中,经常需要添加一个计划期间,可以通过输入计划期间的年或月自动生成对应的开始和结束时间。只输入红色框内的编码,自动生成效果如下:





if ((isNumeric((String) code) && (((String) code).length() == 4))

|| (isNumeric((String) code) && (((String) code).length() == 6))) {
Object name = null; // 名称
int intCode = Integer.parseInt(((String) code));// 把输入的code编码转换成int
// 添加的是一年时
if (code != null && intCode > 1949 && intCode < 2149) {
name = e.getBillCardPanel().getBodyValueAt(selectrow, "code");
int year = intCode;// 当前输入的年的值
name = (String) name + "年";
e.getBillCardPanel().setBodyValueAt(name, selectrow, "name");
ilevel = 1;
e.getBillCardPanel().setBodyValueAt(ilevel, (selectrow),
"ilevel");
// 一年的开始时间
String startd = year + "-01-01 00:00:00";
UFDateTime startdate1 = new UFDateTime(startd);
e.getBillCardPanel().setBodyValueAt(startdate1, selectrow,
"startdate");
// 一年的 结束时间
String endd = year + "-12-31 23:59:59";
UFDateTime enddate1 = new UFDateTime(endd);
e.getBillCardPanel().setBodyValueAt(enddate1, selectrow,
"enddate");


// 批量增加月份
if (ilevel.equals(1)) {
String pk_group = e.getContext().getPk_group();
for (int i = 0; i < 12; i++) {// 循环12次表示12个月
e.getBillCardPanel().getBillModel().addLine();
int rownum = e.getBillCardPanel().getBillTable()
.getRowCount();
creator = e.getContext().getPk_loginUser();
e.getBillCardPanel().setBodyValueAt(creator, selectrow,
"creator");
code = e.getBillCardPanel().getBodyValueAt(selectrow,
"code");
// 1~9月
if (i + 1 < 10) {
name = (String) code + "年0" + (i + 1) + "月";
e.getBillCardPanel().setBodyValueAt(name,
(selectrow + i + 1), "name");
code = (String) code + 0 + (i + 1);
e.getBillCardPanel().setBodyValueAt(code,
(selectrow + i + 1), "code");
ilevel = 2;
e.getBillCardPanel().setBodyValueAt(ilevel,
(selectrow + i + 1), "ilevel");
// 当前月份的 开始时间
int m = i + 1;
String mstartd = year + "-" + m + "-01 00:00:00";
UFDateTime startdate = new UFDateTime(mstartd);
e.getBillCardPanel().setBodyValueAt(startdate,
(selectrow + i + 1), "startdate");
// 当前月份的 结束时间
String mendd;
// 二月闰年时
if (m == 2
&& (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
mendd = year + "-" + m + "-29 23:59:59";
UFDateTime enddate = new UFDateTime(mendd);
e.getBillCardPanel().setBodyValueAt(enddate,
(selectrow + i + 1), "enddate");
} else if (m == 2) {// 二月非闰年
mendd = year + "-" + m + "-28 23:59:59";
UFDateTime enddate = new UFDateTime(mendd);
e.getBillCardPanel().setBodyValueAt(enddate,
(selectrow + i + 1), "enddate");
} else if (m == 4 || m == 6 || m == 9) {// 4 6 9 月
mendd = year + "-" + m + "-30 23:59:59";
UFDateTime enddate = new UFDateTime(mendd);
e.getBillCardPanel().setBodyValueAt(enddate,
(selectrow + i + 1), "enddate");
}
// 1 3 5 7 8 10 12月
else {
mendd = year + "-" + m + "-31 23:59:59";
UFDateTime enddate = new UFDateTime(mendd);
e.getBillCardPanel().setBodyValueAt(enddate,
(selectrow + i + 1), "enddate");
}
}
// 10~12月
else {
name = (String) code + "年" + (i + 1) + "月";
e.getBillCardPanel().setBodyValueAt(name,
(selectrow + i + 1), "name");
code = (String) code + (i + 1);
e.getBillCardPanel().setBodyValueAt(code,
(selectrow + i + 1), "code");
ilevel = 2;
e.getBillCardPanel().setBodyValueAt(ilevel,
(selectrow + i + 1), "ilevel");
// 当前月份的 开始时间
int m = i + 1;
startd = year + "-" + m + "-01 00:00:00";
UFDateTime startdate = new UFDateTime(startd);
e.getBillCardPanel().setBodyValueAt(startdate,
(selectrow + i + 1), "startdate");
// 结束时间
String mendd;
if (m == 11) {
mendd = year + "-" + m + "-30 23:59:59";
UFDateTime enddate = new UFDateTime(mendd);
e.getBillCardPanel().setBodyValueAt(enddate,
(selectrow + i + 1), "enddate");
} else {
mendd = year + "-" + m + "-31 23:59:59";
UFDateTime enddate = new UFDateTime(mendd);
e.getBillCardPanel().setBodyValueAt(enddate,
(selectrow + i + 1), "enddate");
}
}
}
}
}
// 添加的是一个月的时候
else if (code != null && intCode > 194900 && intCode < 214913) {
name = e.getBillCardPanel().getBodyValueAt(selectrow, "code");
String month = ((String) name).substring(((String) name)
.length() - 2);// 截取月份
int m = Integer.parseInt(month);
// 月份必须是1~12
if ((m > 0) && (m <= 12)) {
if ((m > 0) && (m <= 9)) {// 1到9月
name = ((String) name).substring(0, 4);
int year = Integer.parseInt((String) name);// 年
month = month.substring(1);
name = (String) name + "年" + "0" + month + "月";
e.getBillCardPanel().setBodyValueAt(name, selectrow,
"name");
ilevel = 2;
e.getBillCardPanel().setBodyValueAt(ilevel,
(selectrow), "ilevel");
// 开始时间
String startd = ((String) code).substring(0, 4) + "-"
+ month + "-01 00:00:00";
UFDateTime startdate1 = new UFDateTime(startd);
e.getBillCardPanel().setBodyValueAt(startdate1,
selectrow, "startdate");


// 结束时间
String endd = null;
if (Integer.parseInt(month) == 4
|| Integer.parseInt(month) == 6
|| Integer.parseInt(month) == 9) {
endd = ((String) code).substring(0, 4) + "-"
+ month + "-30 23:59:59";
} else if (Integer.parseInt(month) == 2) {
if (year % 4 == 0 && year % 100 != 0
|| year % 400 == 0) {
endd = ((String) code).substring(0, 4) + "-"
+ month + "-29 23:59:59";
} else {
endd = ((String) code).substring(0, 4) + "-"
+ month + "-28 23:59:59";
}
} else {
endd = ((String) code).substring(0, 4) + "-"
+ month + "-31 23:59:59";
}
UFDateTime enddate1 = new UFDateTime(endd);
e.getBillCardPanel().setBodyValueAt(enddate1,
selectrow, "enddate");


}
// 10~12月
else {
name = ((String) name).substring(0, 4);
name = (String) name + "年" + month + "月";
e.getBillCardPanel().setBodyValueAt(name, selectrow,
"name");
ilevel = 2;
e.getBillCardPanel().setBodyValueAt(ilevel,
(selectrow), "ilevel");
// 当前月份的开始时间
String startd = ((String) code).substring(0, 4) + "-"
+ month + "-01 00:00:00";
UFDateTime startdate1 = new UFDateTime(startd);
e.getBillCardPanel().setBodyValueAt(startdate1,
selectrow, "startdate");
// 11月只有30天
if (Integer.parseInt(month) == 11) {
String endd = ((String) code).substring(0, 4) + "-"
+ month + "-30 23:59:59";
UFDateTime enddate1 = new UFDateTime(endd);
e.getBillCardPanel().setBodyValueAt(enddate1,
selectrow, "enddate");
} else if (Integer.parseInt(month) == 10
|| Integer.parseInt(month) == 12) {
// 12月有31天
String endd = ((String) code).substring(0, 4) + "-"
+ month + "-31 23:59:59";
UFDateTime enddate1 = new UFDateTime(endd);
e.getBillCardPanel().setBodyValueAt(enddate1,
selectrow, "enddate");
}
}
}
// 输入的是六位数,但是后面两位数不在1~12之间(即月份不在1~12范围内)
else {
code = null;
e.getBillCardPanel()
.setBodyValueAt(code, selectrow, "code");
name = null;
e.getBillCardPanel()
.setBodyValueAt(name, selectrow, "name");
ilevel = null;
e.getBillCardPanel().setBodyValueAt(ilevel, (selectrow),
"ilevel");
}


}
// 输入的不是四位数或六位数数字的时候
// else if (((String) code).length() != 4 || ((String)
// code).length() !=
// 6)
else {
code = null;
e.getBillCardPanel().setBodyValueAt(code, selectrow, "code");
name = null;
e.getBillCardPanel().setBodyValueAt(name, selectrow, "name");
return;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值