首页 > 编程语言 >Java面向对象程序设计——设计日期类

Java面向对象程序设计——设计日期类

时间:2024-02-03 10:12:32浏览次数:26  
标签:md Java pattern MyDate 面向对象 new 程序设计 Calendar public

设计日期类

【问题描述】借助Calendar类,设计一个日期类MyDate,能根据多种输入数据创建日期对象,可对日期进行计算,并以不同的模式输出日期。类图如下:

【输入形式】1-8的整数
【输出形式】输入1,则输出2010-10-10

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
//-----以下为需填片段-------
class MyDate {
	Calendar c = Calendar.getInstance();
	String pattern = "yyyy-MM-dd";

	public MyDate() {
	}

	public MyDate(int y, int m, int d) {
		c.set(y, m - 1, d);
	}

	public MyDate(String source) {
		SimpleDateFormat sf = new SimpleDateFormat(pattern);
		Date d = new Date();
		try {
			d = sf.parse(source);
			c.setTime(d);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	public MyDate(String source, String pattern) {
		SimpleDateFormat sf = new SimpleDateFormat(pattern);
		setPattern(pattern);
		Date d = new Date();
		try {
			d = sf.parse(source);
			c.setTime(d);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	public MyDate after(int n) {
		c.add(Calendar.DATE, n);
		return new MyDate(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, c.get(Calendar.DATE));
	}

	public MyDate before(int n) {
		c.add(Calendar.DATE, -n);
		return new MyDate(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, c.get(Calendar.DATE));
	}

	public Date getDate() {
		return c.getTime();
	}

	public Calendar getCalendar() {
		return c;
	}

	public long getLong() {
		return c.getTimeInMillis();
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}

	public String toString() {
		SimpleDateFormat sf = new SimpleDateFormat(pattern);
		return sf.format(c.getTime());
	}
}
//--------------------------
public class Main {
	public static void main(String[] args) {
		int selected;
		Scanner in=new Scanner(System.in);
		selected=in.nextInt();
		MyDate md=new MyDate(2000,10,10);
		switch(selected){
		case 1:
			System.out.println(md);
			break;
		case 2:
			md=new MyDate("2010-10-10");
			System.out.println(md);
			break;
		case 3:
			md=new MyDate("2010/10/10","yyyy/MM/dd");
			System.out.println(md);
			break;
		case 4:
			System.out.println(md.after(8));
			break;
		case 5:
			System.out.println(md.before(20));
			break;
		case 6:
			System.out.println(md.getCalendar().get(Calendar.YEAR));
			break;
		case 7:
			md.setPattern("yyyy/MM/dd");
			System.out.println(md);
		}
		in.close();
	}
}

记录Java面向对象课程练习题,方便查阅。如有错误,恳请指出。

标签:md,Java,pattern,MyDate,面向对象,new,程序设计,Calendar,public
From: https://www.cnblogs.com/zhuannnn/p/18004377

相关文章

  • Java 8 Optional:优雅处理空指针异常的新型容器
    一、Optional概述1.1Optional定义Optional是Java8中引入的一个类,用于描述一个值不存在的情况。它可以存储任意类型的值,或者表示一个空值。使用Optional类可以避免null值的传递和检查,提高代码的健壮性和可读性。Optional类的定义如下:publicfinalclassOptional<T>{/......
  • 包机制和JavaDoc
    包机制为了更好地组织类,Java提供包机制,用于区别类名的命名空间。包语句的语法格式为:packagepkg1[.pkg2[.pkg3...]]一般利用公司域名倒置作为包名;//com.hongyi.xxx为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可完成此功能。impor......
  • 第五章:面向对象编程(基础)
    面向对象概述软件开发方法:面向过程和面向对象面向过程:关注点在实现功能的步骤上PO:ProcedureOriented。代表语言:C语言面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。例如开汽车:启动、踩离合、挂挡、松离合......
  • JVM(Java虚拟机)整理(二)
    前言上一篇内容:JVM(Java虚拟机)整理(一)Java内存模型(JMM)Java内存模型引入声明:本节内容转载于@pdai:JVM基础-Java内存模型引入。很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系。@......
  • JAVA8 - 函数式接口
    目录原始类型特化函数描述符原始类型特化JAVA8为Predicate、Consumer、Suppler等函数式接口带来了一个专门的版本,以便在输入和输出时都是基本类型时避免自动装箱的操作IntPredicateevenNumbers=(inti)->i%2==0;//无装箱Predicate<Integer>evenNumbers2=(Inte......
  • [Java]静态代理、动态代理(基于JDK1.8)
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18002823出自【进步*于辰的博客】参考笔记一,P83;笔记二,P75.4。目录1、静态代理1.1概述1.2静态代理的两种形式1.2.1面向接口1.2.2面向继承2、动态代理2.1什么是动态代......
  • 【Java】SpringBoot集成微信V3支付
    前言这篇文章主要实现一下通过IJPay来实现微信v3支付案例,本篇文章使用的是JSAPI即小程序支付准备工作导入依赖<dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>2.9.6</versio......
  • JAVA数组练习代码
    一维数组的有序插入思路代码点击查看代码importjava.util.Scanner;/***@authorLittleBear*@date2024-02-02-16:57*/publicclassseqInsertion{publicstaticvoidmain(String[]args){System.out.println("pleaseinputyournum:");......
  • java - 判断时间范围区间
    JSONObjectrespObj=newJSONObject(s);SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");StringstartTimeStr="2024-01-01";StringendTimeStr="2024-01-31";DatestartTimDate=sdf.parse(startTimeStr);//strin......
  • Java 中的泛型机制
    泛型JDK5.0之后推出的新特性:泛型泛型这种语法机制,只在程序编译阶段起作用,只给编译器参考的(运行阶段没用)使用泛型的好处:集合中存储的元素统一了从集合中取出来的元素类型是泛型指定的类型,不需要进行大量的“向下转型”泛型的缺点:集合中的元素缺乏多样性importjava.util.Ar......