1;为了回顾熟悉一下关于Date类的为核心的一下关于时间日期的类,打一个小型的项目练练手,
这个基本上没有用到面向对象设计的思想,基本上还是用面向过程设计的思维方式,只需一个类,所有任务都是在main方法中完成的,单纯的就是练练手;熟悉一下过程;
2;要达到怎样的效果;如图
3;分析;
3.1;要从键盘输入,则需要接受;
//先要获取键盘输入流;
Scanner scanner = new Scanner(System.in);
//接收一行;
String temp = scanner.nextLine();
这些可以自己查API文档;
3.2;将字符串表示的时间转化为日历的时间;
//键盘获取字符串时间
String temp = scanner.nextLine();
分几步;
1;String类型转化为Date类型;
//使用DateFormat类;
//需要获取时间格式化字符串;SimpleDateFormat类;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//使用其中parse()方法;将字符串时间转化为Date对象时间;
Date date = dateFormat.parse(temp);
2;将Date时间对象转化为Calendar日历对象;
//创建一个Calendar对象,将Date时间对象转化为这个对象
Calendar calendar = new GregorianCalendar();
//使用setTime()方法将calendar对象的时间设置为Date对象表示的时间
calendar.setTime(date);
3.3;接下来就负责使用Caledar系列方法完成可视化日历了;
1,需要保存一下传入时间的在这个月的天数;
int trueDate = calendar.get(Calendar.DATE);
//将日期变成1号,因为日历是从1号开始的;
calendar.set(Calendar.DAY_OF_MONTH, 1);//这里写Calendar.DATE一样;
//获取1号这是星期几;确定这个月日历的开始地方;
int k = calendar.get(Calendar.DAY_OF_WEEK);
//获取这个月的最大天数;
int maxDate = calendar.getActualMaximum(Calendar.DATE);
//接下来就是简单的控制界面输出了;这里需要注意一下换行;
//当这天是这个星期的星期6时要进行换行;
int w = calendar.get(Calendar.DAY_OF_WEEK);
if(w==7){
System.out.print("\n");
}
calendar.add(Calendar.DATE, 1);//还是根据calendar时间来判断星期几的因此需要加1
4;源码;
package calendar;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class CalendarText {
public static void main(String[] args) throws ParseException {
//提示输入日期的格式;
System.out.println("输入格式为“1996-12-03;");
//获得一个键盘输入流;
Scanner scanner = new Scanner(System.in);
//接收一行字符串;
String temp = scanner.nextLine();
//提供时间格式化字符串;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//将输入的时间字符串按照时间格式化字符串转化成Date时间对象;
Date date = dateFormat.parse(temp);
//创建一个Calendar对象日期;
Calendar calendar = new GregorianCalendar();
//将Date对象表示时间传入Calendar对象则。时间变为日历类型;
calendar.setTime(date);
//保存一下传入时间的在这个月的天数;
int trueDate = calendar.get(Calendar.DATE);
//将日期变成1号,日历是从1号开始的;
calendar.set(Calendar.DAY_OF_MONTH, 1);//这里写Calendar.DATE一样;
//获取1号这是星期几;
int k = calendar.get(Calendar.DAY_OF_WEEK);
//获取这个月的最大天数;
int maxDate = calendar.getActualMaximum(Calendar.DATE);
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i = 1; i < k; i++){
System.out.print('\t');
}
for(int i = 1; i<=maxDate; i++){
if(i == trueDate){
System.out.print("<"+ i +">"+"\t");
}
else{
System.out.print(i+"\t");
}
int w = calendar.get(Calendar.DAY_OF_WEEK);
if(w==7){
System.out.print("\n");
}
calendar.add(Calendar.DATE, 1);
}
}
}