[java] 可视化日历的实现(基于Calendar类 )

news/2025/2/12 18:23:02

写在前面

博文安排顺序如下

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 package TestCalendar;
 2 
 3 import java.util.Date;
 4 import java.text.DateFormat;
 5 import java.text.ParseException;
 6 import java.text.SimpleDateFormat;
 7 import java.util.Calendar;
 8 import java.util.GregorianCalendar;
 9 
10 
11 public class visonCalendar {
12     public static void main(String args[]){
13 
14         String temp = "2014-11-11";
15         Calendar calendar = new GregorianCalendar();
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
GEra designatorTextAD
yYearYear199696
YWeek yearYear200909
MMonth in year (context sensitive)MonthJulyJul07
LMonth in year (standalone form)MonthJulyJul07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesdayTue
uDay number of week (1 = Monday, ..., 7 = Sunday)Number1
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard TimePSTGMT-08:00
ZTime zoneRFC 822 time zone-0800
XTime zoneISO 8601 time zone-08-0800-08:00


https://dhexx.cn/news/show-1703095.html

相关文章

C# 中的四舍五入算法及 MSDN 2005 中文版 Math.Round 勘误 .

C# 中没有四舍五入函数&#xff0c;事实上我知道的程序语言都没有四舍五入函数&#xff0c;因为四舍五入算法不科学&#xff0c;国际通行的是 Banker 舍入法。Bankers rounding&#xff08;银行家舍入&#xff09;算法&#xff0c;即四舍六入五取偶。事实上这也是 IEEE 规定的舍…

大厂难进,Java面试该如何一面即中?

Java作为编程语言中的NO.1&#xff0c;选择入行做IT做编程开发的人&#xff0c;基本都把它作为首选语言&#xff0c;进大厂拿高薪也是小伙伴们的梦想。 但很多小伙伴没有正确的学习方法与完整的知识体系图谱&#xff0c;很容易忽视一些Java基础知识&#xff0c;如Java注解、IO…

非码农也能看懂的“机器学习”原理

我们先来说个老生常谈的情景&#xff1a;某天你去买芒果&#xff0c;小贩摊了满满一车芒果&#xff0c;你一个个选好&#xff0c;拿给小贩称重&#xff0c;然后论斤付钱。 自然&#xff0c;你的目标是那些最甜最成熟的芒果&#xff0c;那怎么选呢&#xff1f;你想起来&#xff…

响应变化

响应变化&#xff0c;哪些能响应&#xff0c;哪些不能响应。 变化大&#xff0c;变化小时如何处理 响应变化的度&#xff0c;范围控制&#xff0c;是否超过了当前软件的功能。设计的度&#xff0c;范围控制。业务人员开发团队人员优先级 需求管理范围管理版本管理软件架构、代码…

python为什么在大学计算机等级考试会考呢?为什么会火爆全网呢?

python为什么在大学计算机等级考试会考呢&#xff1f;为什么这么火爆呢&#xff1f; 原因就是python应用广泛&#xff0c;办公自动化&#xff0c;数据分析爬虫等与我们的生活联系密切。 下面看一个利用Python分析学生成绩 注意&#xff1a;本实验是基于Anconda3.X所进行的 一…

SpringMVC 中 返回JSON 数据

前台发一个post请求 后台用controller接住&#xff0c;一定要用 ResponseBody的注解才行。 jackson需要jar包.rar 下载jar包之后&#xff0c;导入其中的三个即可 这样后台直接返回集合就行。前台收到的就是一个JSON数组了。 是不是简单到没朋友。

不要再被Python洗脑了?

最近我们一直被人工智能、Python等各种文章洗脑&#xff0c;文章都在写这些编程语言发展前景比较大&#xff0c;薪资待遇比较高&#xff0c;人才比较稀缺&#xff0c;所以很多人都在争相学习Python、人工智能。 其实就是因为它简单&#xff0c;实用性大而已&#xff0c;其他都…

ARMGNU伪指令

符号定义伪指令 .global,.local,.set,.equ .global 使得符号对连接器可见&#xff0c;变为对整个工程可用的全局变量 .global symbol .local 表示符号对外部不可见&#xff0c;只对本文件可见 .local symbol .set 给一个全局变量或局部变量赋值&#xff0c;和.equ的功能一样 .s…

高效项目管理的十大要诀

当前社会越来越倾向于以项目为中心&#xff0c;通过良好的项目管理来提高工作效率是非常有效的。但是对大多数公司来说&#xff0c;转向以项目为导向的管理结构将会带来极大的变化&#xff0c;尽管变化本身会带来利益&#xff0c;但是人们却往往抵制变化。一定的规则和指导方针…

一文带你看懂Python数据分析利器——Pandas的前世今生

本文将从Python生态、Pandas历史背景、Pandas核心语法、Pandas学习资源四个方面去聊一聊Pandas&#xff0c;期望能带给大家一点启发 Python生态里的Pandas 五月份TIOBE编程语言排行榜&#xff0c;Python追上Java又回到第二的位置。Python如此受欢迎一方面得益于它崇尚简洁的编程…