java实现日历效果

java实现打印某年全部的信息

import java.util.Calendar;
import java.util.GregorianCalendar;public class shuz {public static int[][] calendarArray(int year,int month) {// 创建Calendar对象并设置日期为2023年8月1日Calendar calendar = Calendar.getInstance();calendar.set(year, month, 1);// 获取2023年8月的天数int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);// 创建一个二维数组来存储日历int[][] calendarArray = new int[6][7];// 将日历中的日期存储到二维数组中/***  calendar.get(Calendar.DAY_OF_WEEK) 为开始的坐标*      从星期日开始, 那么2为周一*      那么从星期一开始,那么2为*/int dif_between;if (calendar.get(Calendar.DAY_OF_WEEK) == 1){dif_between = 6;}else {dif_between = calendar.get(Calendar.DAY_OF_WEEK) - 2;}for (int i = 1; i <= days; i++) {int nowVal = i + dif_between - 1;int row =   nowVal / 7 ;int column = nowVal % 7;calendarArray[row][column] = i;}boolean firstRowEmpty = isFirstRowEmpty(calendarArray);if (firstRowEmpty){calendarArray = removeEmptyFirstRow(calendarArray);}// 打印日历
//        System.out.println("一\t二\t三\t四\t五\t六\t日");// 打印日历for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {int val = calendarArray[i][j];
//                System.out.print(calendarArray[i][j] + "\t");}}return calendarArray;}/***  判断是否第一行为空* @param array* @return*/public static boolean isFirstRowEmpty(int[][] array) {for (int i = 0; i < array[0].length; i++) {if (array[0][i] != 0) {return false;}}return true;}/***  转置数据,将第一行数据为空的数组转置*   例如: 000*         111*   改为:*         111*         000* @param array* @return*/public static int[][] removeEmptyFirstRow(int[][] array) {if (array.length == 0 || array[0].length == 0) {return array;}int[][] processedArray = new int[6][7];for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {processedArray[i][j] = 0;}}for (int i = 1; i < array.length; i++) { // Start from the second rowprocessedArray[i - 1] = array[i]; // Remove the first row and add the rest to the new array}return processedArray;}/*** 根据当前日期的起始时间,* @param args*/public static void main(String[] args) {for (int k = 0; k < 12; k++) {int[][] ints = handel_data(306000000,k);System.out.println(k + 1 + "月");System.out.println("一\t二\t三\t四\t五\t六\t日");for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {System.out.print(ints[i][j] + "\t");}System.out.println();}}}private static int[][] handel_data(int year,int month){
//        int year = 2023;// 月份是从0开始的,所以7代表八月// 如果当天是星期天,那么前面会有一些空白,因为每个月的第一天不一定是星期天Calendar calendar = Calendar.getInstance();calendar.set(year, month, 1);/***  星期日 1 - 6 (1 - 1)% 7*  星期一 2 - 1*  星期二 3 - 2*  星期三 4 - 3*  星期四 5 - 4*  星期五 6 - 5*  星期六 7 - 6***  那么从星期一开始 则为7*/int dif_between;if (calendar.get(Calendar.DAY_OF_WEEK) == 1){dif_between = 6;}else {dif_between = calendar.get(Calendar.DAY_OF_WEEK) - 2;}int[][] calendarArray = handle_before(year,month-1 ,dif_between,calendarArray(year,month));return handle_after(calendarArray);}private static int[][] handle_before(int year, int month,int bew,int[][] arr) {GregorianCalendar calendar = new GregorianCalendar();// 设置年份和月份// 设置日期和时间calendar.set(year, month, 1); // 设置年份、月份和日期// 获取这个月的总天数int maxDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);int begin_day = maxDayOfMonth  - bew + 1;int[] data = getData(begin_day, maxDayOfMonth , bew);for (int i = 0; i < data.length; i++) {arr[0][i] = data[i];}return arr;}private static int[][] handle_after(int[][] calendarArray) {int index = 1;for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {int val = calendarArray[i][j];if (val == 0){calendarArray[i][j] = index;index++;}}}return calendarArray;}private static int[] getData( int start,int end,int maxDayOfMonth){int[] res = new int[maxDayOfMonth+1];for (int i = 1; i <= maxDayOfMonth; i++) {res[i] = i;}int[] resVal = new int[end-start + 1];int index = 0;while (start <= end){resVal[index] = start;index++;start++;}return resVal;}
}

1月
一 二 三 四 五 六 日
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
2月
一 二 三 四 五 六 日
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
3月
一 二 三 四 五 六 日
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2
3 4 5 6 7 8 9
4月
一 二 三 四 五 六 日
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
5月
一 二 三 四 五 六 日
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11
6月
一 二 三 四 五 六 日
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7
7月
一 二 三 四 五 六 日
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
8月
一 二 三 四 五 六 日
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 1 2 3 4 5
6 7 8 9 10 11 12
9月
一 二 三 四 五 六 日
24 25 26 27 28 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6
10月
一 二 三 四 五 六 日
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12
11月
一 二 三 四 五 六 日
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
12月
一 二 三 四 五 六 日
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
1 2 3 4 5 6 7

Process finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【springboot原理篇】Bean的加载方式,面试必看

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 一、上古时代原始方式&#xff1a; &#x1f4d5;XML文件 ~~bean定义 &#x1f440;演示获取bean&#xff1a; ❌缺点&#xff1a; &#x1f4d5;注解方式&#xff1a; ~~component ~~指定扫描路径&#…

vm net 方式 静态ip配置访问主机IP和外网

1、win 11 安装vm&#xff0c;镜像文件 F:\software\VMwork\CentOS-7-x86_64-Everything-1804.iso 2、配置网络 net 方式 3、右击网络--》属性---》更改适配器设置--》vmnet8 属性 如果没有vm1、vm8 虚拟机编辑---》虚拟机网络编辑器-->还原默认设置 注意&#xff1a;这…

接口验签规则

一、验签的背景 在网络发展快速的过程中&#xff0c;总是会忽略接口数据安全问题&#xff0c;进行验签则能够在一定程度上能够防刷&#xff0c;数据篡改。 二、什么是加签验签 加签验签&#xff0c; 发送消息方&#xff0c;对消息加签名&#xff1b; 接受消息方&#xff0…

英语学习(去餐馆篇)

一、预定餐位 1.餐馆 1&#xff09;谈论食物 Seafood is their specialty. 海鲜是他们的特色菜。 They serve authentic Italian food. 他们供应正宗意大利菜。 2&#xff09;谈论餐馆名声 The restaurant has a great reputation. 这家餐馆名声很好。 Th…

使用Notepad++编辑器,安装AnalysePlugin搜索插件

概述 是一款非常有特色的编辑器&#xff0c;Notepad是开源软件&#xff0c;Notepad中文版可以免费使用。 操作步骤&#xff1a; 1、在工具栏 ->“插件”选项。 2、勾选AnalysePlugin选项&#xff0c;点击右上角“安装”即可。 3、 确认安装插件 4、下载插件 5、插件已安装…

Java 设计模式——备忘录模式

目录 1.概述2.结构3.案例实现3.1.“白箱”备忘录模式3.2.”黑箱”备忘录模式 4.优缺点5.使用场景 1.概述 &#xff08;1&#xff09;备忘录模式 (Memento Pattern) 又称为快照模式&#xff0c;是一种行为型设计模式&#xff0c;它提供了一种保存和恢复对象状态的机制。备忘录模…

涓流充电计时电路芯片D1302,具有双管脚主电源和备用电源,可编程涓流充 电器VCC1,还有 31 字节的暂存器等功能

D1302 涓流充电计时电路包含一个实时时钟 / 日历和 31 字节的静 态RAM &#xff0c;通过简单的串行接口与微处理器通讯。这个实时时钟 / 日历 提供年月日、时分秒信息&#xff0c;对于少于31 天的月份月末会自动调整&#xff0c; 还有闰年校正。由于有一个 AM/PM 指示器&a…

天翼云:“百万IOPS”助推政企上云

随着数字化转型的加速&#xff0c;越来越多的企业选择了业务上云。众所周知&#xff0c;不论是政企关键/核心业务中的大型数据库、NoSQL、AI训练&#xff0c;还是互联网业务中的游戏、渲染等场景&#xff0c;对数据读写IOPS和时延有极高的要求。作为全球领先的云服务商&#xf…

分享77个菜单导航JS特效,总有一款适合您

分享77个菜单导航JS特效&#xff0c;总有一款适合您 77个菜单导航JS特效下载 链接&#xff1a;https://pan.baidu.com/s/1sfT9ONLH4ocliA1C7Z5xbQ?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0…

K8S 工具收集

杂货铺&#xff0c;我不用 K8S&#xff0c;把见过的常用工具放在这里&#xff0c;后面学的时候再来找 名称描述官网Pixie查看 k8s 的工具。集群性能、网络状态、pod 状态、热点图等HomeKubernetes Dashboard基于 Web 的 Kubernetes 集群用户界面。GithubGardenerSAP 开源的 K8…

75Ω视频放大驱动芯片 D1671,2.8~5.5V 内 置 SAG端 子 6dB放 大 器 电 路,应用于手持设备中

D1671 是 一 块 带 4 级 低 通 滤 波 的 单 通 道 视 频 放 大 电 路 &#xff0c; 可 在 3V 或 5V的 低 电 压 下 工 作 。 该 电 路 用 在 有 TV 影 象 输 出 功 能 的 产 品 上 面 &#xff0c; 比 如 机 顶 盒 &#xff0c;监 控 摄 象 头 &#xff0c;DVD &#xf…

骨传导耳机音量大了有害吗?骨传导能保护听力吗?

无论是传统耳机还是骨传导耳机&#xff0c;只要使用音量过大&#xff0c;都会对有一定的损伤&#xff0c;然而由于骨传导耳机的传声原理和佩戴方式比较特殊&#xff0c;所以对人体的损伤比较小&#xff0c;想要知道骨传导耳机能否保护听力&#xff0c;就要先了解骨传导耳机的传…

【Axure教程】用中继器制作多选树

“多选树”可能指的是一种用户界面元素&#xff0c;用于展示层级结构并允许用户选择多个节点。这在软件应用程序中常用于设置、文件浏览器等场景。 Axure里面虽然自带了一个树元件&#xff0c;但是并没有多选的功能&#xff0c;所以今天就教大家如何用中继器制作一个多选树的基…

acwing-Linux学习笔记

acwing-Linux课上的笔记 acwing-Linux网址 文章目录 1.1常用文件管理命令homework作业测评命令 2.1 简单的介绍tmux与vimvimhomeworktmux教程vim教程homework中的一些操作 3 shell语法概论注释变量默认变量数组expr命令read命令echo命令printf命令test命令与判断符号[]逻辑运算…

Vue3集成ThreeJS实现3D效果,threejs+Vite+Vue3+TypeScript 实战课程【一篇文章精通系列】

Vue3集成ThreeJS实现3D效果&#xff0c;threejsViteVue3TypeScript 实战课程【一篇文章精通系列】 项目简介一、项目初始化1、添加一些依赖项 二、创建3D【基础搭建】1、绘制板子&#xff0c;立方体&#xff0c;球体2、材质和光照3、材质和光照和动画4、性能监控5、交互控制6、…

【有机化学(药学类)】醛和酮3

第一题 思考 格氏试剂与不饱和醛酮的亲核加成反应&#xff0c;主要发生1,2加成&#xff08;注意&#xff1a;氧原子算是1&#xff09; 第二题 思考 叶立德反应&#xff0c;看到磷原子就应该想到这个&#xff01; 第三题 思考 涉及到两个反应&#xff1a; 亲核加成反应&…

5. Jetson Orin Nano CUDA 配置

5. Jetson Orin Nano CUDA 配置 1&#xff1a;安装Jtop jtop安装主要有以下三个步骤&#xff1a; 安装pip3 我们需要使用pip3来安装jtop&#xff0c;所以先安装pip3 sudo apt install python3-pip安装jtop sudo -H pip3 install -U jetson-stats运行jtop服务 sudo -H pip3 in…

SAAS版专业级条码标签打印软件解决方案

一。新一代互联网打印模式 saas云标签打印软件支持条码、二维码、表格等模式组合打印&#xff0c;支持批量打印标签、表格模拟数据 、在线预览二维码打印 、在线条码生成打印标签 ● 条码/二维码/标签打印&#xff0c;支持表格批量打印标签&#xff1b; ● 条码/二维码尺寸…

每天一点python——day85

#每天一点Python——85 #python常见的异常类型&#xff1a; #如图&#xff1a; #①数学运算异常【由于会报错&#xff0c;我直接全部注释掉了】 print(10/0) 输出&#xff1a;ZeroDivisionError: division by zero#②索引错误list1[1,2,3,4] print(list1[5])#找索引为4的元素 输…

CUDA简介——同步

1. 引言 前序博客&#xff1a; CUDA简介——基本概念CUDA简介——编程模式CUDA简介——For循环并行化CUDA简介——Grid和Block内Thread索引CUDA简介——CUDA内存模式 本文重点关注Thread同步和Barriers。 Threads并行执行&#xff0c;可能存在如下问题&#xff1a; 1&#…