Java编程中calendar对万年历的制作教程
使用到的方法:
1.日期类型的转换:
String----->Date
String str = "2020年05月27日 20:28:50";
//SimpleDateFormat格式化时间
//y:年yyyy:四位年
//M:月MM:两位月
//d:日dd:两位日
//H:小时HH:
//m:分钟mm:
//s:秒数ss:
//a:上午 下午
//E:星期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
注意:"2020年05月27日 20:28:50"和"yyyy年MM月dd日 HH:mm:ss"格式必须相同,否则会出错
Date date = null;
//捕获异常
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("日期为:"+date);
Date---->Calendar
Calendar cal = new GregorianCalendar();
cal.setTime(date);
System.out.println(cal.getTime());
2.add和roll的用法:
cal.add(Calendar.YEAR, -1)//代表时间往前倒一年
cal.add(Calendar.YEAR, +1)//代表时间往后走一年
cal1.add(Calendar.MONTH, -3); //代表月份往前走三个月,它会改变年
cal1.roll(Calendar.MONTH, -3); //代表月份往前走三个月,它不会改变年
3.时间的设置:
cal.set(Calendar.MONTH, 7);//修改月份
cal.set(Calendar.YEAR, 2021);//修改年份
使用add、roll、和设置时间时要先用静态工厂方法获取时间:格式
Calendar cal = Calendar.getInstance();
System.out.println(cal);
万年历的制作:
1.万年历主体结构的制作:
/**
* 万年历
*/
public class CalendarHome {
//创建一个全局变量的键盘扫描器
static Scanner key = new Scanner(System.in);
public static void main(String[] args) {
//获取当前的日期
Calendar cal = new GregorianCalendar();
//获取本月当前的日期
//将Calendar日期类型转换为date类型
Date date = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月");
//将date---->String
String string = sdf.format(date);
System.out.println("当前时间为:"+string);
//打印日历的方法
showTime(cal);
while (true) {
//打印操作的帮助信息
help();
//接收用户输入的指令
int con = key.nextInt();
switch (con) {
case 1:
//查看上个月的日历
preMonth(cal);
break;
case 2:
//查看下个月的日历
nextMonth(cal);
break;
case 3:
//查看上年的日历
preoYear(cal);
break;
case 4:
//查看下年的日历
nextYear(cal);
break;
case 5:
//查看指定年月的日历
checkYearMonth(cal);
break;
default:
System.out.println("请输入正确的选项");
}
}
}
2.导入的包:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
3.封装help方法(操作面板设计):
/**
* 打印操作的帮助信息
*/
private static void help() {
System.out.println("************************");
System.out.println("1.查看上个月的日历");
System.out.println("2.查看下个月的日历");
System.out.println("3.查看上年本月的日历");
System.out.println("4.查看下年本月的日历");
System.out.println("5.查看指定年月的日历");
System.out.println("************************");
System.out.println("请输入操作:");
}
4.封装preMonth方法:
/**
* 查看上个月的日历
*
*/
private static void preMonth(Calendar cal) {
//运用add的方法,获取上个月的日历
cal.add(Calendar.MONTH, -1);
showTime(cal);
}
5.封装nextMonth方法:
/**
* 查看下个月的日历
*
*/
private static void nextMonth(Calendar cal) {
// 运用add的方法,获取下个月的日历
cal.add(Calendar.MONTH, +1);
//调用showTime
showTime(cal);
}
6.封装preYear方法:
/**
* 查看上年的日历
*
*/
private static void preYear(Calendar cal) {
// 运用add的方法,获取上年的日历
cal.add(Calendar.YEAR, -1);
//调用showTime
showTime(cal);
}
7.封装nextYear方法:
/**
* 查看下年日历
*
*/
private static void nextYear(Calendar cal) {
// 运用add的方法,获取下年的日历
cal.add(Calendar.YEAR, +1);
//调用showTime
showTime(cal);
}
8.封装checkYearMonth方法:
/**
* 查看指定年月的日历
*
*/
private static void checkYearMonth(Calendar cal) {
//用int获取查询的当时的时间
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
//提示用户输入要查看的年
System.out.println("请输入要查看的年:(格式:2020-05)");
//接收用户输入的年份
String str = key.next();
//将String类型的日期转为date类型的
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date = null;
//捕获异常
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
//把date类型的日期转为Calendar类型的日期
cal.setTime(date);
//输出获取到的日期,这里显示的日期都是当月的1号日期
System.out.println(date);
//设置查询到的日期当时的时间
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.HOUR_OF_DAY, hour);
//调用showTime
showTime(cal);
}
运行结果展示