java心得(日历)

来源:互联网 发布:射手播放器 for mac 编辑:程序博客网 时间:2024/05/17 08:12
package lianghengrong;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;


public class MyCalendar {
public static void main(String[] args) throws ParseException {
Scanner scan = new Scanner(System.in);
boolean flag = true;
while(flag){
System.out.println("请输入年月,格式如2017-12");
//获取字符串日期
String stringDate = scan.nextLine();
//时间格式
SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM");//格式记得看清楚
//字符串日期转换Date
Date date = sp.parse(stringDate);//需要引入异常
//获得当前日期
Calendar calendar = Calendar.getInstance();//日历不能new出来,只能静态方式
int nowOfYear = calendar.get(Calendar.YEAR);
int nowOfMonth = calendar.get(Calendar.MONTH)+1;
int nowOfDay = calendar.get(Calendar.DATE);
//设置日期
calendar.setTime(date);
//获得设置日期
int setOfYear = calendar.get(calendar.YEAR);
int setOfMonth = calendar.get(calendar.MONTH)+1;//记得加1,因为1月在java是0
int setOfDay = calendar.get(calendar.DATE);
//获取设置第一天为星期几
int dayOfWeek = calendar.get(calendar.DAY_OF_WEEK);
//获取设置月份总共多少天
int allOfDay = calendar.getActualMaximum(calendar.DAY_OF_MONTH);
//打印标题
System.out.println(setOfYear+"年"+setOfMonth+"月");
System.out.println("日\t一\t二\t三\t四\t五\t六");
//打印空格
for(int i=0;i<dayOfWeek-1;i++) {
System.out.print(" \t");
}
//打印所有的日期
for(int j=1;j<=allOfDay;j++) {
if(nowOfYear==setOfYear && nowOfMonth==setOfMonth && nowOfDay==j) {//如果设置日期等于今天日期则标志星号
System.out.print(j+"*\t");
}else {
System.out.print(j+"\t");
}

//打印换行,因为知道的只有dayofweek和j有用,所以对比之间规律j为2,9,16等换行,然后本来常规规律为7的倍数换行,而dayofweek为6换行
if((dayOfWeek-1 + j)%7 == 0) {
System.out.println();
}
}
System.out.println();
}
}

}