在Java编程中,处理日期计算和验证是一项常见的任务,特别是在处理用户输入或者业务逻辑中。这段代码提供了一个简单的示例,展示了如何实现以下几个关键功能: 1. **日期输入与解析**: 代码通过`BufferedReader`从用户输入获取两个日期字符串,格式为"yyyyMMdd"。`yyyy`, `mm`, 和 `dd` 分别代表年、月和日。通过`Long.parseLong()`将字符串转换为`long`类型,然后进一步进行拆分,提取出年、月、日的整数值。 2. **日期类型定义**: 创建了一个名为`DateType`的自定义类,用于存储和处理日期。这个类可能包含了日期的构造方法,以及用于打印日期的方法(如`printDate()`和`prin`...),以便检查日期的合法性。 3. **日期差值计算**: 对于每个输入的日期,程序首先创建一个`DateType`对象,然后通过调用其内部方法来判断日期是否合法。如果日期有效(`j1`或`j2`为0表示合法),则可以继续进行差值计算。这里的差值可能是基于`Date`或`Calendar`类,但代码中没有明确展示具体的计算过程。 4. **日期合法性的判断**: 通过`j1`和`j2`变量来表示日期合法性。如果日期不符合规定的格式,`j1`或`j2`会返回非零值,提示用户输入错误。这一步骤有助于确保输入的是有效的日期格式。 5. **日期前推后推**: 代码中提到的"前推后推日期"可能是指在给定日期的基础上增加或减少指定天数,但具体实现并未在这段代码中展示。通常,这会涉及到`Date`或`LocalDate`对象的加减操作,可以使用`addDays()`方法。 6. **循环控制**: 代码使用两个嵌套的`while`循环,分别用于获取两个日期,直到用户选择退出(当`a1`或`a2`等于2时)。这样,用户可以连续输入并处理多个日期对。 总结来说,这段代码的核心内容是Java日期处理的基本操作,包括日期输入、格式验证、差值计算以及日期合法性的检查。虽然没有完全展示所有的细节,但提供了理解这些概念的清晰框架。如果你需要更详细的差值计算或日期操作方法,你可能需要查阅Java标准库中的`java.time`包,如`LocalDate`、`ChronoUnit`等类,它们提供了更强大的日期处理功能。
package da;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class zp
{
public static void main(String[] args) throws IOException
{ String date,G,H;;
long num,yyyy,mm,dd;
int y1 = 0,y2 = 0,m1 = 0,m2 = 0,d1 = 0,d2 = 0,q1,q2,a1=1,a2=1,j1 = 0,j2 = 0;
BufferedReader buf;
buf=new BufferedReader(new InputStreamReader(System.in));
/**********************输入日期**************************/
while(a1==1) //循环判断日期合法性
{
System.out.print("请输入第一个日期:(格式:yyyymmdd)");
date=buf.readLine();
num=Long.parseLong(date);
yyyy=num/10000; //求年
mm=(num-num/10000*10000)/100; //求月
dd=num-num/100*100; //求日
y1=(int)yyyy;d1=(int)dd;m1 =(int)mm; //强制类型转换赋值
DateType c=new DateType(y1,m1,d1); //调用DateType
j1=c.printDate();
if(j1==2)
System.out.println("第一个日期错误!");
else a1=2;
while(a2==1)
{
System.out.print("请输入第二个日期:(格式:yyyymmdd)");
date=buf.readLine();
num=Long.parseLong(date);
yyyy=num/10000;
mm=(num-num/10000*10000)/100;
dd=num-num/100*100;
y2=(int)yyyy;d2=(int)dd;m2 =(int)mm;
DateType c1=new DateType(y2,m2,d2);
j2=c1.printDate();
if(j2==2)
System.out.println("第二个日期错误!");
else a2=2;
}
/**********************输入日期差**************************/
System.out.print("请输入前推天数:");
G=buf.readLine();
q1= Integer.parseInt(G);
System.out.print("请输入后推天数:");
H=buf.readLine();
q2= Integer.parseInt(H);
DateType c=new DateType(y1,m1,d1);
DateType c1=new DateType(y2,m2,d2);
if(j1==2)
System.out.println("第一个日期错误!");
if(j2==2)
System.out.println("第二个日期错误!");
if(j1==1&&j2==1)
剩余7页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ***+SQL三层架构体育赛事网站毕设源码
- 深入探索AzerothCore的WoTLK版本开发
- Jupyter中实现机器学习基础算法的教程
- 单变量LSTM时序预测Matlab程序及参数调优指南
- 俄G大神修改版inet下载管理器6.36.7功能详解
- 深入探索Scratch编程世界及其应用
- Aria2下载器1.37.0版本发布,支持aarch64架构
- 打造互动性洗车业务网站-HTML5源码深度解析
- 基于zxing的二维码扫描与生成树形结构示例
- 掌握TensorFlow实现CNN图像识别技术
- 苏黎世理工自主无人机系统开源项目解析
- Linux Elasticsearch 8.3.1 正式发布
- 高效销售采购库管统计软件全新发布
- 响应式网页设计:膳食营养指南HTML源码
- 心心相印婚礼主题响应式网页源码 - 构建专业前端体验
- 期末复习指南:数据结构关键操作详解