写在前面
博文安排顺序如下
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.按格式输出
源码
1 packageTestCalendar;2
3 importjava.util.Date;4 importjava.text.DateFormat;5 importjava.text.ParseException;6 importjava.text.SimpleDateFormat;7 importjava.util.Calendar;8 importjava.util.GregorianCalendar;9
10
11 public classvisonCalendar {12 public static voidmain(String args[]){13
14 String temp = "2014-11-11";15 Calendar calendar = newGregorianCalendar();16 DateFormat df = new SimpleDateFormat("yyyy-MM-dd");17
18 try{19 Date date =df.parse(temp);20 calendar.setTime(date);21 int day =calendar.get(Calendar.DATE);22 calendar.set(Calendar.DAY_OF_MONTH, 1);23 int FirstDay =calendar.get(Calendar.DAY_OF_WEEK);24 int maxDate =calendar.getActualMaximum(Calendar.DATE);25 System.out.println(FirstDay);26
27 System.out.println("日\t一\t二\t三\t四\t五\t六");28 for(int i = 1; i <= maxDate; i++){29 if (i ==day){30 System.out.print("*");31 }32 while((FirstDay-1)>0){ //按照需要打印的格式,本月1号从第FirstDay天开始,所以前面需要(FirstDay-1)个" \t"
33 System.out.print(" \t");34 FirstDay--;35 }36
37 System.out.print(i+"\t");38 int w =calendar.get(Calendar.DAY_OF_WEEK);39 if(w == Calendar.SATURDAY){ //每到周六换行
40 System.out.print("\n");41 }42 calendar.add(Calendar.DATE, 1); //从1号开始打印,每次打印完日期加1,否则换行if判断无效
43
44 }45 } catch(ParseException e) {46 e.printStackTrace();47 }48
49 }50
51 }
相关知识
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 的格式定义
LetterDate or Time ComponentPresentationExamples
G
Era designator
AD
y
Year
1996; 96
Y
Week year
2009; 09
M
Month in year (context sensitive)
July; Jul; 07
L
Month in year (standalone form)
July; Jul; 07
w
Week in year
27
W
Week in month
2
D
Day in year
189
d
Day in month
10
F
Day of week in month
2
E
Day name in week
Tuesday; Tue
u
Day number of week (1 = Monday, ..., 7 = Sunday)
1
a
Am/pm marker
PM
H
Hour in day (0-23)
0
k
Hour in day (1-24)
24
K
Hour in am/pm (0-11)
0
h
Hour in am/pm (1-12)
12
m
Minute in hour
30
s
Second in minute
55
S
Millisecond
978
z
Time zone
Pacific Standard Time; PST; GMT-08:00
X
Time zone
-08; -0800; -08:00