java控制台打印本月的日历
作者:水果623 发布时间:2023-10-15 22:58:12
标签:java,控制台,打印日历
Java在控制台打印本月日历
在学习《Java核心技术卷I·基础知识》第10版 的时候里面有一个小例子,就是在控制台上打印日历的一个例子,就想自己试试。
代码如下:
import java.time.LocalDate;
public class TestScanner {
public static void main(String[] args) {
rili();
}
private static void rili() {
System.out.println(" Mon Tue Web Thu Fri Sta Sun");
//获取当前日期
LocalDate now = LocalDate.now();
//获取当前月份
int nowMonth = now.getMonthValue();
//获取今天是几号
int nowDay = now.getDayOfMonth();
//在外部设置一个月份的变量,用于与当前月份进行判断
int dayOfMonth = nowMonth;
//获取本月月初的日期
now = now.minusDays(nowDay - 1);
//获取月初是星期几
int firstWeek = now.getDayOfWeek().getValue();
String blank = "";
for(int i = 0; i < firstWeek; i++) {
blank += " ";
}
//如果1号是星期一的话前面添加三个空格
if(firstWeek != 1) {
//截取最后一个空格用于存放日期,不然的话会错位
blank = blank.substring(0, blank.length() - 1);
} else {
blank = " ";
}
//打印日期
System.out.print(blank + now.getDayOfMonth());
//如果加1天之后的日期还是本月份的就一直打印
while(dayOfMonth == nowMonth) {
//加1天
now = now.plusDays(1L);
//获取加1天之后的月份
dayOfMonth = now.getMonthValue();
//如果加一天之后的月份不等于当前月份,就直接跳出循环
if (dayOfMonth != nowMonth) {
break;
}
//判断如果日期为双位数,就在前面添加两个空格,否则就添加三个空格
if (now.getDayOfMonth() < 10) {
//判断加一天之后的日期是否和今天相等,如果相等就在前面加个*
if (now.getDayOfMonth() == nowDay) {
System.out.print(" *" + now.getDayOfMonth());
} else {
System.out.print(" " + now.getDayOfMonth());
}
} else {
if (now.getDayOfMonth() == nowDay) {
System.out.print(" *" + now.getDayOfMonth());
} else {
System.out.print(" " + now.getDayOfMonth());
}
}
//获取加一天之后的星期数
int week = now.getDayOfWeek().getValue();
//如果是星期日,就换行
if (week == 7) {
System.out.println();
}
}
}
}
结果
来源:https://blog.csdn.net/u011389297/article/details/84987687


猜你喜欢
- 网上杂七杂八的说法不一,大多数都是抄来抄去,没有实践,近期在项目频繁遇到boot+jackson处理日期的问题,故开此贴。首先是POM<
- 一、html代码 &n
- 本文实例讲述了Android单选按钮对话框用法。分享给大家供大家参考。具体如下:main.xml布局文件<?xml version=&
- 我们在Android开发中总能看到程序的log日志内容充满了屏幕
- ArrayList介绍ArrayList底层是基于数组实现的,是一个动态数组,自动扩容。ArrayList不是线程安全的,只能用在单线程环境
- 命名空间的特性首先熟悉一下命名空间的两个概念。声明区域:可以在其中进行声明的区域,如全局文件的声明区域是文件,函数内声明的变量声明区域为代码
- 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何自定义一个类似热门标签那样
- 1、认识 Spring CacheSpring Cache是Spring提供的一整套缓存解决方案。它本身并不提供缓存实现,而是提供统一的接口
- 在官方的这篇文档中为大家介绍了如何使用Java开启Azure Windows虚拟机的诊断设置这篇文章呢,为大家介绍一下如何使用Java开启L
- SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案。标准的MVC设计模式,将整个系统划分为显示层、Co
- 目录1、什么是LockSupport?2、两类基本API3、LockSupport本质4、LockSupport例子5、LockSuppor
- HashTable和HashMap区别第一,继承的父类不同。Hashtable继承自Dictionary类,而HashMap继承自Abstr
- 创建AlertDialog的步骤:创建AlertDialog.Builder对象调用Builder对象的setTitle方法设置标题,set
- 代码很简单,直接上代码,大家参考使用吧package com.it.login.service;import java.io.Buffere
- 简述增量更新,根据字面理解,就是下载增加的那部分来达到更新的目的,实际就是这个意思。原理用一个旧的Apk安装与一个新的Apk安装包使用 bs
- 先贴正确配置<?xml version="1.0" encoding="UTF-8"?>
- 概述:通过自定义ImageView控件,在xml布局里面调用自定的组件实现图片的缩放。/*** 自定义的ImageView控制,可对图片进行
- 目前 Android 已经不推荐使用下列方式创建 Notification实例:Notification notification = ne
- 这几天开发遇到一个需求:将自定义文件后缀添加默认图标双击自定义的文件后缀可以自动关联到指定的应用程序并自动打开上述第一、二两点其实是一个需求
- 本文实例讲述了Android桌面插件App Widget用法。分享给大家供大家参考,具体如下:应用程序窗口小部件App Widgets应用程