【Date类】打印万年历;1.判断当前月有多少天;2.判断第一天星期几;

/*
 * 打印万年历:1.判断当前月有多少天;2.判断第一天星期几;
 */

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.swing.JOptionPane;

public class TestCalendar03 {
	public void test2() throws IOException, ParseException {
		// 从控制台获取数据
		// System.out.println("请输入时间:");
		String strDate = JOptionPane.showInputDialog(null, "请输入时间(格式:yyyy-mm):", 
				"指定时间的日历",JOptionPane.INFORMATION_MESSAGE);
		// 定义字符转日期的转换器
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
		// 定义日期
		Date date = sdf.parse(strDate);
		// 获取关于指定日期的相关信息
		Calendar cal = new GregorianCalendar();
		cal.setTime(date);
		System.out.println(strDate);
		// DAY_OF_MONTH是获得当前时间点所在月的第几号
		int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
		// 获取当月的最大天数
		int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
		// 获取当星期的第几天
		int week = cal.get(Calendar.DAY_OF_WEEK);

		System.out.println("dayofmonth:" + dayOfMonth + "\n" + "maxday:"
				+ maxDay + "\n" + "dayofweek:" + week);

		String[] s = { "日", "一", "二", "三", "四", "五", "六" };
		for (int i = 0; i < s.length; i++) {
			System.out.print(s[i] + "\t");
		}
		// 定义一个集合 存放 占位符和天数
		List<String> temp = new ArrayList<String>();
		for (int i = 1; i < week; i++) { // 添加占位空格
			temp.add(" ");
		}
		for (int i = 1; i <= maxDay; i++) { // 添加天数
			// temp.add(String.valueOf(i)); //第一种转字符串方法
			temp.add(i + " "); // 第二种,加个字符串,自动转
		}
		// 打印日期
		for (int i = 0; i < temp.size(); i++) {
			if (i % 7 == 0) {
				System.out.println();
			}
			System.out.print(temp.get(i) + "\t");
		}
	}

	public static void main(String[] args) throws IOException, ParseException {
		TestCalendar03 tc = new TestCalendar03();
		tc.test2();
	}
}

 

 

 

               //第二种方法
	public void getCalender(){
		try {
			System.out.println("请输入时间:(yyyy-mm)");
			String strDate = new BufferedReader(new InputStreamReader(System.in)).readLine();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
			  //定义日期
			Date date = sdf.parse(strDate);
			//获取关于指定日期的相关信息
			Calendar cal = new GregorianCalendar();
			cal.setTime(date);
			System.out.println("日\t一\t二\t三\t四\t五\t六");
			for (int i = 0; i < cal.get(Calendar.DAY_OF_WEEK)-1; i++) {
				System.out.print("\t");
			}
			for (int i = 1; i <= cal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
				cal.set(Calendar.DATE, i);
				if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
					System.out.println(i+"\t");
				}else
				System.out.print(i+"\t");
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

 

你可能感兴趣的:(java,swing)