首页 > 编程语言 >打印当前月日历.java

打印当前月日历.java

时间:2024-09-20 12:50:13浏览次数:8  
标签:日历 java 打印 System month date out

参考代码:

import java.time.DayOfWeek;
import java.time.LocalDate;

public class CalendarTest {
    public static void main(String[] args) {
        // 1 获取当前日期,并用month和today存储当前月份以及当前号,例如20号,31号
        LocalDate date = LocalDate.now(); // => 2024-09-20
        int month = date.getMonthValue(); // => 9
        int today = date.getDayOfMonth(); // => 20

        // 2 将date设置为本月的第一天,并获取该天是星期几,例如7
        date = date.minusDays(today - 1); // => 2024-09-01
        DayOfWeek weekday = date.getDayOfWeek(); // => SUNDAY
        int value = weekday.getValue(); // => 7
        // 1 = Monday周一, ... , 7 = Sunday周日

        // 3 打印日历头
        System.out.printf("\u2728  Welcome to Month %d! \u2728%n%n", month);
        // %n是一个更为通用和安全的换行方式,特别是在涉及到不同操作系统时
        System.out.println("Mon Tue Wed Thu Fri Sat Sun");
        for (int i = 1; i < value; ++i) { // 本月第一天一般不是周一开始!
            System.out.print("    "); // 注意使用英文括号!
        }

        // 4 打印号,适当时候换行
        while (date.getMonthValue() == month) { // 仅打印本月
            System.out.printf("%3d", date.getDayOfMonth());
            if (date.getDayOfMonth() == today) {
                System.out.print("*"); // 如果是当天标记一个*号
            } else {
                System.out.print(" ");
            }

            date = date.plusDays(1); // 打印完一天就将date更新为下一天
            if (date.getDayOfWeek().getValue() == 1) { // 如果这一天是周一,那么打印之前先换行
                System.out.println();
            }
        }

        if (date.getDayOfWeek().getValue() != 1) { // 如果这一天不是周一,但结束了,也补一个换行
            System.out.println();
        }
    }
}

 

标签:日历,java,打印,System,month,date,out
From: https://www.cnblogs.com/xkxf/p/18422294

相关文章

  • 【源码文档全套】基于SSM的大学生评优管理系统-JAVA/VUE(开题答辩实训报告论文)
        博主介绍:......
  • Java反射概述
    反射Java反射(Reflection)是一种允许程序在运行时动态地获取有关类、方法和属性的信息,甚至可以对它们进行操作的机制。通过反射,程序可以在编译时并不知道一个类的具体信息的情况下,运行时获取该类的结构,并进行相应的操作。反射的核心是在运行时操作类和对象的元信息,这为开发提......
  • java线程池闭坑指南
    专业在线打字练习网站-巧手打字通,只输出有价值的知识。一前言线程池作为初学者常感困惑的一个领域,本次“巧手打字通课堂”将深入剖析其中几个最为普遍的误区。为了更清晰地阐述这些知识点,让我们以一个具体定义的线程池为例来展开说明。如下:ThreadPoolExecutorexecutor=ne......
  • 【Java DTO、VO类型转换工具类,对象与对象之间赋值】全部一行代码搞定!爽
    对象转换工具一、modelmapper介绍二、安装(一)引入依赖(二)添加工具类三、使用示例(一)单个对象转换(一)简单转换(二)转换时对转换后的对象处理(二)转换时对转换后的对象、源对象处理(一)批量转换(一)简单转换(二)转换时对转换后的对象处理(二)转换时对转换后的对象、源对象处理一、m......
  • 代码随想录算法训练营第十六天 | Javascript | 力扣Leetcode | 回溯 | 77. 组合、216.
    目录前言简介题目链接:77.组合题目链接:216.组合总和3题目链接:17.电话号码的字母组合前言踏平坎坷成大道,斗罢艰险又出发!自律的尽头是自控,自控的尽头是硬控。愿道友们披荆斩棘,终能得偿所愿。简介本人是小几年经验的前端开发,算法基础只有力扣几十道题,非常薄......
  • 代码随想录算法训练营第十五天 | Javascript | 继续二叉树的一天 | 力扣Leetcode | 补
    目录前言简介题目链接:501.二叉搜索树中的众数题目链接:236.二叉树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先前言踏平坎坷成大道,斗罢艰险又出发!自律的尽头是自控,自控的尽头是硬控。愿道友们披荆斩棘,终能得偿所愿。简介本人是小几年经验的前端开发,......
  • JavaScript基础语法
    JavaScript基本语法一、变量及数据类型1.变量1.1.变量的定义方法在JavaScript中,你可以使用var、let或const关键字来声明变量。其中,var声明的变量会提升(hoisting)到其作用域的顶部,而let和const(ES6及以后版本引入)声明的变量具有块级作用域,并且const声明的变量一旦赋值后不可重新......
  • JavaScript可视化
    引言随着大数据时代的到来,数据可视化成为了信息表达和知识发现的重要手段。JavaScript,凭借其广泛的浏览器支持、强大的交互能力以及丰富的生态系统,成为了数据可视化领域的重要工具。无论是前端开发中的数据图表展示,还是更高级的数据可视化应用,JavaScript都扮演着至关重要的角......
  • JavaScript期末大作业 基于HTML+CSS+JavaScript技术制作web前端开发个人博客(48页) (1
    ......
  • 阅读周·你不知道的JavaScript | 无人不识又无人不迷糊的this
    背景去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。没有计划的阅读,收效甚微。新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一本书籍。这个“玩法”虽然常见且板正,但是有效,已经坚持阅读两个月。《你不知道的JavaScr......