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 '%( ...
随机推荐
- C语言的通用指针类型(void *)
reference: https://blog.csdn.net/cumirror/article/details/4631701 https://blog.csdn.net/Lee_Shuai/ar ...
- Java基础-访问修饰符
访问修饰符 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类( ...
- Oracle 创建存储过程 提示权限不足或者提示表和视图不存在问题
grant create view to hospital; --授予查询权限 grant select any table to hospital; --授予权限 grant select any ...
- 2019-04-17-day034-线程与数据共享
内容回顾 锁 互斥锁 能够保护数据的安全性 保证对于数据的修改操作同一时刻多个进程只有一个进程执行 进程数据不安全 : 同时修改文件/数据库/其他共享资源的数据 ###队列 -- 实现了进程之间的通信 ...
- APP加急审核
提交加急审核需要理由,一般涉及到银行信息,或者崩溃打不开这种的比较容易通过.反正苹果很苛刻,一般不给处理.如果处理第二天就可以下载最新了,省去了漫漫的等待.一个成功加急审核的借口-- We found ...
- noip-2006普及组-数列- 【模拟-找规律-快速幂】
链接:https://ac.nowcoder.com/acm/contest/153/1047 来源:牛客网 题目描述 给定一个正整数k( ≤ k ≤ ),把所有k的方幂及所有有限个互不相等的k的方幂 ...
- QMD ST表 倍增
#include<iostream> #include<cmath> using namespace std; ; int a[maxn]; ]; ]; int quick(i ...
- 解决WPF中异常导致的程序Crash
通常在WPF中出现异常,会导致程序Crash,即使把异常Throw出来,依旧会报错,解决方法只需在App.xaml.cs中进行处理即可,废话不说,代码如下: private int exception ...
- crm --- 1.admin , 展示列表 和 分页
一.admin (创建超级用户) 1.注册: 1.创建一个超级管理员,使用如下命令: python manage.py createsuperuser 2.输入打算使用的登录名: username:m ...
- 第二章 C#语法基础(2.1C#语言的数据类型二)
数据类型案例说明 一.数据类型与变量(计算整数10与20的和) namespace ConsoleApp1 { class Program { static void Main(string[] ar ...