写在前面

博文安排顺序如下

1.写在前面

2.源码

3.思路

4.相关知识

该小程序是对Date类及其相关类的复习

要求如下图:实现可视化日历

实现思路

1.先从键盘输入指定格式的字符串(str)
2.将字符串用格式转换类转换成日期( Date date = format.parse(str) )
3.将日期设置成日历类( calendar.setTime(date) )
4.获取当月第一天是周几( calendar.get(Calendar.DAY_OF_WEEK) )
5.获取当月多少天( calendar.getActualMaximum(Calendar.DATE) )
6.按格式输出

源码

 package TestCalendar;

 import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar; public class visonCalendar {
public static void main(String args[]){ String temp = "2014-11-11";
Calendar calendar = new GregorianCalendar();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try {
Date date = df.parse(temp);
calendar.setTime(date);
int day = calendar.get(Calendar.DATE);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int FirstDay = calendar.get(Calendar.DAY_OF_WEEK);
int maxDate = calendar.getActualMaximum(Calendar.DATE);
System.out.println(FirstDay); System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i = 1; i <= maxDate; i++ ){
if (i == day){
System.out.print("*");
}
while((FirstDay-1)>0){ //按照需要打印的格式,本月1号从第FirstDay天开始,所以前面需要(FirstDay-1)个" \t"
System.out.print(" \t");
FirstDay--;
} System.out.print(i+"\t");
int w = calendar.get(Calendar.DAY_OF_WEEK);
if(w == Calendar.SATURDAY){ //每到周六换行
System.out.print("\n");
}
calendar.add(Calendar.DATE, 1); //从1号开始打印,每次打印完日期加1,否则换行if判断无效 }
} catch (ParseException e) {
e.printStackTrace();
} } }

相关知识

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

Calendar.DAY_OF_WEEK 定义和值如下:

Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7

SimpleDateFormat 的格式定义

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 199696
Y Week year Year 200909
M Month in year (context sensitive) Month JulyJul07
L Month in year (standalone form) Month JulyJul07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day name in week Text TuesdayTue
u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard TimePSTGMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08-0800-08:00

[java] 可视化日历的实现(基于Calendar类 )的更多相关文章

  1. Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序

    Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...

  2. Java基础知识强化94:Calendar类之Calendar概述和获取日历字段的方法

    1. Calendar类概述:       Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR.MONTH.DAY_OF_MONTH.HOUR 等 日历字段之间的转换提供了一些方法,并 ...

  3. Java基础知识强化96:Calendar类之获取任意年份的2月有多少天的案例

    1. 分析: (1)键盘录入任意的年份 (2)设置日历对象的年月日            年:就是(1)输入的数据            月:是2(3月份)            日:是1  (3)把 ...

  4. Java基础知识强化95:Calendar类之Calendar类的add()和set()方法

    1. Calendar的add()和set()方法: public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作 public ...

  5. 《java入门第一季》之Calendar类小案例获取任意二月天数

    import java.util.Calendar; import java.util.Scanner; /* * 获取任意一年的二月有多少天 * * 分析: * A:键盘录入任意的年份 * B:设置 ...

  6. Java.util 包(Date 类、Calendar类、Random类)

    java.util 包提供了一些实用的方法和数据结构. Date 类 Date 类表示日期和时间,里面封装了操作日期和时间的方法.Date 类经常用来获取系统当前时间. 构造方法: 构造方法 说明 D ...

  7. Java的Calendar类

    通过Date类我们可以创建并格式化一个日期对象,但是如何才能设置和获取日期数据的特定部分呢?----Calendar类 Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,通过getIn ...

  8. Java—时间的原点 计算时间所使用的 Date类/DateFormat类/Calendar类

    Date类 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis()  返回值long类型参数 用于获取当前日期的毫 ...

  9. java 的Calendar类的可视化日历示例

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

随机推荐

  1. C++基础——函数指针 函数指针数组

    ==================================声明================================== 本文版权归作者所有. 本文原创,转载必须在正文中显要地注明 ...

  2. logback配置详解1

    一:根节点<configuration>包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文 ...

  3. Linux下使用 Memory Analyzer

    一. 安装Memory Analyzer Tool 打开eclipse >> Help >> Install New Software >> 点击Work With ...

  4. 常用Linux命令记录

    [RSYNC] 指定SSH端口从远程服务器同步文件至本地目录 rsync -avH --progress '-e ssh -p 3600' user@remote_ip:remote_dir  loc ...

  5. Oracle数据库穿越防火墙访问

    原因 Oracle listener 只起一个中介作用,当客户连接它时,它根据配置寻找到相应的数据库实例进程,然后spawned一个新的数据库连接,这个连接端口由listener传递给客户机,此后客户 ...

  6. javascript运算符语法概述

    × 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...

  7. STL"源码"剖析-重点知识总结

    STL是C++重要的组件之一,大学时看过<STL源码剖析>这本书,这几天复习了一下,总结出以下LZ认为比较重要的知识点,内容有点略多 :) 1.STL概述 STL提供六大组件,彼此可以组合 ...

  8. 第3章 Linux常用命令(5)_网络命令和挂载命令

    7. 网络命令 7.1 给用户发信息,以ctr+D保存结束 (1)write命令 命令名称 write 命令所在路径 /user/bin/write 执行权限 所有用户 语法 write <用户 ...

  9. 2016第二届陕西省网络空间安全大赛WriteUp

    2016年5月28号(正式比赛) 有选择题和实践题,俩队员在弄选择题时,我去拿了web1的一血. 0x01 web 是一道代码审计题,发包,返回了源代码: <?php if (isset($_G ...

  10. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - .NET商业化成品成熟各种数据权限的需求对应例子代码

    还是我上次提出的那个问题问题:假设一个订单表,1.角色A可以看自己的2.角色B可以看工作组的3.角色C可以看金额是1000元以下的(自定义条件是否可行?如果可以,请详细说明)4.角色D可以看整个部门的 ...