Calendar打印日历
package com.example.demo; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; @RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests { @Test
public void contextLoads() { setMonth("2018年02月"); } private Date str2Date(String str) {
try {
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月");
return df.parse(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} /**
* 设置月份
*/
private void setMonth(String Month) { Date month = str2Date(Month);
boolean isCurrentMonth = false;
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
//获取今天是多少号
int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
int todayWeekIndex = calendar.get(Calendar.DAY_OF_WEEK) - 1; Date cM = str2Date(getMonthStr(new Date()));
//判断是否为当月
if (cM.getTime() == month.getTime()) {
isCurrentMonth = true;
int selectDay = currentDay;//当月默认选中当前日
} else {
isCurrentMonth = false;
int selectDay = 0;
}
System.out.println("设置月份:" + getMonthStr(month) + " 今天" + currentDay + "号, 是否为当前月:" + isCurrentMonth);
calendar.setTime(month);
int dayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//第一行1号显示在什么位置(星期几)
int firstIndex = calendar.get(Calendar.DAY_OF_WEEK) - 1;
int lineNum = 1;
//第一行能展示的天数
int firstLineNum = 7 - firstIndex;
int lastLineNum = 0;
int shengyu = dayOfMonth - firstLineNum;
while (shengyu > 7) {
lineNum++;
shengyu -= 7;
}
if (shengyu > 0) {
lineNum++;
lastLineNum = shengyu;
}
System.out.println(getMonthStr(month) + "月一共有" + dayOfMonth + "天,第一天的索引是:" + firstIndex + " 有" + lineNum +
"行,第一行" + firstLineNum + "个,最后一行" + lastLineNum + "个"); int days[][] = new int[5][7]; String weeks[] = {"星期-", "星期二", "星期三", "星期四", "星期五"}; for (int day = 0; day < dayOfMonth; day++) { int column = (day + firstIndex) % 7;
int row = (day + firstIndex) / 7;
days[row][column] = day + 1;
} for (int i = 0; i < weeks.length; i++) { System.out.print(weeks[i] + "\t"); }
System.out.println();
for (int i = 0; i < days.length; i++) {
for (int j = 0; j < days[i].length; j++) {
if (days[i][j] == 0)
System.out.print("\t");
else
System.out.print(days[i][j] + "\t");
} System.out.println();
} } /**
* 获取月份标题
*/
private String getMonthStr(Date month) {
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月");
return df.format(month);
} }

Calendar打印日历的更多相关文章
- Java中Calendar(日历)相关API举例
Java中Calendar(日历)相关API举例,实现功能:输入一个年份和月份打印出这个月的日历. package calendarPrint; import java.util.Calendar; ...
- Python学习实践-----打印日历
使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...
- Oracle打印日历功能
Oracle用SQL打印日历 1.1 打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D, ...
- 使用java 打印日历
package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...
- C++ 实现的一个打印日历程序
C++ 实现的一个打印日历程序 说明:总共有三个文件 1.month.h 为定义函数的头文件 2.month.cpp 为函数的实现代码 3.mainprog.cpp 为主函数的实现代码 month.h ...
- python打印日历
#未优化的代码 1 #输出日历 def print_calendar(year,month,date = 1): month_dict = {':'July', ':'December'} #数字月份 ...
- Python实战练习——打印日历教程
很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日 ...
- 用java打印日历
来自<java核心技术卷一> /** * Created by wangbin10 on 2019/1/3. * 打印当月日历 */ public class CalendarTest { ...
- python 打印日历
import calendar as c'''x = c.monthcalendar(2017,11) 使用这个结果打印出日历 s = 1while s <= 7: print('周%d '%( ...
随机推荐
- leetcode python 032 识别最长合法括号
# 给定一个只包含字符'('和')'的字符串,# 找到最长的有效(格式良好)括号子字符串的长度.# 对于“(()”,最长的有效括号子串是“()”,其长度为2.# 另一个例子是“)()())”,其中最长 ...
- Oracle物化视图梳理
--物化视图可以分为三种类型:* 包含聚集的物化视图* 只包含连接的物化视图* 嵌套物化视图三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大. --物化视图创建方式(Build M ...
- touchend偶尔不触发(待解决)
新闻流,实现tab横向切换效果,出现偶尔切到一半,手指移开后,没有跳转到上一个或下一个tab,而是持续在当前切了一半的位置. 找到原因: 没有切换的时候,touchend都没有触发. 网上找到的解决办 ...
- VS2013/VS2015/VS2017通过oschina托管代码
1.到http://git.oschina.net注册账号,创建项目,这一步不做详细描述,创建后效果如图 2.打开VS创建项目,为了测试,创建一个空白解决方案 3.把解决方案添加到源代码管理(这一步仅 ...
- 1.oracle之表管理sql
/*数据类型1. number(M,N) 整数位和小数位最多是M,其中小数位为N位2. char(M):定长字符串,长度为M,如果插入数据时长度小于M,则在末尾补上空格3. varchar2(M) ...
- elasticsearch 拼音检索能力研究
gitchennan/elasticsearch-analysis-lc-pinyin 配置参数少,功能满足需求. 对应版本 elasticsearch2.3.2 对应 elasticsearch-a ...
- c++简单实现对mysql数据库操作
1.连接数据库 #include <mysql.h> #include <iostream> #include<string> #include<vector ...
- Python全栈之路----hash函数
hash函数: 一般翻译为“散列”或“哈希”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可 ...
- .net平台常用组建
常用的一些开源组件整理: 导出Excel报表的插件:NOPI.dll(基于微软OpenXml实现)开源的作业调度和自动任务框架:Quartz.NET用于大数据搜索引擎的全文检索框架:Lucene.ne ...
- 关于if...else语句的小注意
if...else是一个使用非常频繁的条件语句,在条件满足时执行if下的代码,条件不满足时执行else下的代码.但在使用过程中会由于粗心犯一些错误. 比如我想要把性别的默认值设置为“男”,应该进行如下 ...