通过学习Date和Calendar时写的日历

package com.etc.util;

import java.util.Calendar;
import java.util.Scanner;

public class Calendar2 {

	public static void main(String[] args) {
		// 创建扫描器
		Scanner sc = new Scanner(System.in);
		// 输入年份
		System.out.println("请输入指定年份:");
		int year = sc.nextInt();
		// 输入月份
		System.out.println("请输入指定月份:");
		int month = sc.nextInt();
		// 输入天数
		System.out.println("请输入指定天数:");
		int day = sc.nextInt();

		// 在控制台输出周期数
		System.out.println("日\t一\t二\t三\t四\t五\t六");

		// 创建日历Calendar变量对象
		Calendar cal = Calendar.getInstance();
		// 给Calendar对象设置年月日
		cal.set(Calendar.YEAR, year);
		cal.set(Calendar.MONTH, month - 1);
		// cal.set(Calendar.DATE,day);

		// 将天数设置为第一天
		cal.set(Calendar.DATE, 1);

		// 指定月的第一天是星期几
		int i = cal.get(Calendar.DAY_OF_WEEK);

		int weekday = 0;// 指定月的第一天前面有多少个空格
		switch (i) {
		case 1:
			weekday = 0;
			break;
		case 2:
			weekday = 1;
			break;
		case 3:
			weekday = 2;
			break;
		case 4:
			weekday = 3;
			break;
		case 5:
			weekday = 4;
			break;
		case 6:
			weekday = 5;
			break;
		case 7:
			weekday = 6;
			break;
		}

		// 打印输出指定月第一天的前面几个空格
		for (int j = 0; j < weekday; j++) {
			System.out.print("\t");
		}

		int days = 1;
		// 从指定月的第一天开始打印输出
		for (int j = 0; j < 7 - weekday; j++) {
			System.out.print(days + "\t");
			days++;
		}

		int actualMaximumDate = cal.getActualMaximum(Calendar.DATE);//获取本月的实际最大天数
		cal.set(Calendar.DATE,actualMaximumDate);//设置本月的天数是当前月的实际最大天数
		int week_month=cal.get(Calendar.WEEK_OF_MONTH);//返回的是当前天数是本月第几周       

		for(int j=0;j<week_month;j++){//指定月有多少周,就打印多少行
			System.out.println();//每输出打印7天就换一行
			for(int k=0;k<7;k++){//依次将周日到周六的对应的天数打印出来
				if(days>actualMaximumDate){//若自动增加的天数大于实际天数,循环终止
					return;
				}
				if(days==day){//若指定的天数与当前自动增加的天数一样,标识出来打印
					System.out.print("*"+days+"\t");
				}else{//若指定的天数与当前自动增加的天数不一样,正常打印
					System.out.print(days+"\t");
				}
				days++;
			}
		}

	}
}

  

时间: 2024-10-26 09:47:23

通过学习Date和Calendar时写的日历的相关文章

java Date类和DateFormt类和Calendar类写可视化日历 版本二,键盘实现输入

Scanner scanner=new Scanner(System.in); //创建输入对象String s=scanner.nextLine(); //获取输入字符串DateFormat it =new SimpleDateFormat("yyyy-MM-dd");Date d=it.parse(s); Calendar c= new GregorianCalendar(); c.setTime(d); int day=c.get(Calendar.DAY_OF_MONTH);

java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生成对象 get set add System.arrayCopy()用于集合等的扩容

8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Integer a=127; Integer b=127;//虚拟机自动装箱时进行了特殊处理,-127~128以下的自动取有过的 System.out.println(a==b);结果为true 如果是Integer a=128; Integer b=128; Sys

学习java窗口基本操作时无聊写的

学习java窗口基本操作时无聊写的 就当记录 代码如下: package day08; import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;

Date和Calendar知识

文章来源:http://www.cnblogs.com/manue1/p/4495983.html Java中的日期操作 Date : getTime() .setTime() SimpleDateFormate :   Formate(Date). parse(String s) Calendar : getInstance().set() .get().getActualMaximum().add().  gettime().setTime(Date). 字符串.Date.Calendar之

JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算

JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习一些新的小东西吧 一.System 翻译过来系统的意思,系统类,里面的方法都是静态的,可以直接调用 我们来演示一下吧,先从获取系统信息开始: package com.lgl.hellojava; import java.util.Properties; public class HelloJJAVA

Java时间类Date与Calendar的区别与使用 &#350964;

原文: http://blog.gqylpy.com/gqy/464 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

java 日期操作,Date、Calendar 操作

java开发中避免不了日期相关操作,这里总结了一些常用方法~ 直接上码: package jse; import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /**  * 常用日期操

java Date和Calendar类

最近在无聊的看书,遇到一编程题目,问题描述如下: 黑色星期五源于西方迷信:耶稣基督死于星期五,而13也是一个不吉利的数字.黑色星期五即该日同时是星期五又是13号,求未来几年内这样的日子. 基于该问题会涉及到java中的关于时间类的部分,故尝试通过该题目总结现阶段的java Date和calendar类的问题. 一.Date类 查阅API文档可知,Date类源于jdk1.0版本,并在jdk1.1版本中其绝大多数方法被Calendar类中方法所代替.Date类构造函数public且未abstrct,

java中Date与Calendar详解

在开发中,Date与Calendar使用率上是相当高的,如果对它们不太了解,那么,在实际开发中会发生各种状态.如:为什么我获得到的本月的月份不是本月等等. Date篇 public class Dateextends Objectimplements Serializable, Cloneable, Comparable<Date>类 Date 表示特定的瞬间,精确到毫秒 在类 Date 所有可以接受或返回年.月.日期.小时.分钟和秒值的方法中,将使用下面的表示形式: 年份 y 由整数 y -