java实现日历签到功能_[java] 可视化日历的实现(基于Calendar类 )

写在前面

博文安排顺序如下

1.写在前面

2.源码

3.思路

4.相关知识

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

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

e177b33e0aed986517666a7110c38e79.png

实现思路

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值