java打印指定年月的日历

yizhihongxing

Java 打印指定年月的日历

1. 概述

本教程将介绍如何使用 Java 打印指定年月的日历,本教程不需要使用任何第三方库。

2. 步骤

2.1 步骤一:获取指定日期的 Calendar 对象

java.util.Calendar 类是表示日历的抽象类。它提供了许多静态工厂方法来获取实例, 例如 getInstance() 返回一个默认时区的当前日期和时间的 Calendar 对象。

Calendar cal = Calendar.getInstance();

使用上述代码将获取到的 Calendar 对象初始化为当前日期和时间。

将其设置为指定日期:

cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, 9); // 10月
cal.set(Calendar.DAY_OF_MONTH, 1);

2.2 步骤二:获取指定月份的天数

获取指定月份的天数需要使用 Calendar 对象的 getActualMaximum 方法。

int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

2.3 步骤三:获取指定日期是星期几

获取指定日期是星期几可以使用 Calendar 对象的 get 方法。

int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

2.4 步骤四:打印日历

在我们得到了指定月份的天数和指定日期是星期几之后,我们就可以开始打印日历了。

首先,我们需要在控制台输出星期几的头部:

System.out.println("日\t一\t二\t三\t四\t五\t六");

接下来,我们需要构造一个指定月份的日历。

for (int i = 1; i < dayOfWeek; i++) {
    System.out.print("\t");
}

for (int i = 1; i <= daysInMonth; i++) {
    System.out.print(i + "\t");
    if ((i + dayOfWeek - 1) % 7 == 0) {
        System.out.println();
    }
}
System.out.println();

在这段代码中,我们首先填补前面的空白格(即星期日到指定日期的 i-1 个字符),接着在一行内依次输出月份的日期,并在每输出七个数字后换行。

接下来,我们将以上代码整合到一个完整的 Java 程序中:

import java.util.Calendar;

public class PrintMonthCalender {

    public static void main(String[] args) {
        int year = 2019;
        int month = 9;

        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month - 1);
        cal.set(Calendar.DAY_OF_MONTH, 1);

        int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for (int i = 1; i < dayOfWeek; i++) {
            System.out.print("\t");
        }

        for (int i = 1; i <= daysInMonth; i++) {
            System.out.print(i + "\t");
            if ((i + dayOfWeek - 1) % 7 == 0) {
                System.out.println();
            }
        }
        System.out.println();
    }

}

2.5 示例

接下来,我们看一下两个示例:

  • 示例 1

输出 2022 年 2 月的日历。

int year = 2022;
int month = 2;

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1);

int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i < dayOfWeek; i++) {
    System.out.print("\t");
}

for (int i = 1; i <= daysInMonth; i++) {
    System.out.print(i + "\t");
    if ((i + dayOfWeek - 1) % 7 == 0) {
        System.out.println();
    }
}
System.out.println();

输出结果:

日   一   二   三   四   五   六
        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      
  • 示例 2

输出 2021 年 11 月的日历。

int year = 2021;
int month = 11;

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, 1);

int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);

System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i < dayOfWeek; i++) {
    System.out.print("\t");
}

for (int i = 1; i <= daysInMonth; i++) {
    System.out.print(i + "\t");
    if ((i + dayOfWeek - 1) % 7 == 0) {
        System.out.println();
    }
}
System.out.println();

输出结果:

日   一   二   三   四   五   六
        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      

以上是本教程的全部内容。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java打印指定年月的日历 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 简单了解java获取类的3种方式

    关于“简单了解Java获取类的3种方式”的完整攻略,我会根据以下内容进行讲解: 介绍概念:类是什么及其重要性; 详细讲解获取类的3种方式:new关键字、Class.forName()方法和类名.class; 分别用两个示例进行说明; 总结归纳。 1. 类的概念及其重要性 在Java中,类是一种重要的概念。类定义了对象所具有的属性和行为,是封装的基本单位。通过…

    Java 2023年5月26日
    00
  • Java管理对象方法总结

    Java管理对象方法总结 在Java中,经常需要创建和管理对象。本文将总结Java中管理对象的一些基本方法。 创建对象 Java创建对象的方式有两种:使用构造函数和使用静态工厂方法。 使用构造函数创建对象 对象的构造函数用于在实例化对象时初始化该对象的属性。构造函数的形式如下: public ClassName(params) { // 构造函数的方法体 }…

    Java 2023年5月19日
    00
  • java之File对象对文件的操作常用的几个方法(推荐)

    Java之File对象对文件的操作常用的几个方法 在Java中,我们可以使用File类来操作文件和目录。File类提供了许多常用的方法,本篇文章将介绍File对象对文件的操作常用的几个方法。 1. 创建文件 我们可以使用File类的createNewFile()方法来创建文件。该方法创建一个新的,为空的文件,如果文件已经存在则返回false。 import …

    Java 2023年5月20日
    00
  • Java Swing组件文件选择器JFileChooser简单用法示例

    下面我就详细为您讲解“Java Swing组件文件选择器JFileChooser简单用法示例”的完整攻略。 什么是JFileChooser? JFileChooser是Java Swing组件库中的一个组件,它提供了一个通用的、可自定义的对话框,用于允许用户选择文件或目录。用户可以通过对话框打开或者保存文件或目录,并进行其他一些相关操作。 如何使用JFile…

    Java 2023年5月20日
    00
  • 通过java记录数据持续变化时间代码解析

    通过Java记录数据持续变化时间代码解析 当我们需要记录某个变量的持续变化时间(即开始变化到结束变化的时间),可以通过Java代码实现。这种方式可以用于监控某个变量,例如温度、湿度等持续变化的情况,也可以用于统计某个变量的变化时长。 实现过程 我们可以定义一个Timer类,包含以下属性: startTime:变量开始变化的时间戳(毫秒) endTime:变量…

    Java 2023年5月20日
    00
  • springboot @Controller和@RestController的区别及应用详解

    Spring Boot @Controller和@RestController的区别及应用详解 在Spring Boot中,@Controller和@RestController是两个常用的注解,用于处理HTTP请求。虽然它们都可以用于处理请求,但它们之间有一些区别。在本文中,我们将详细讲解@Controller和@RestController的区别及应用详…

    Java 2023年5月15日
    00
  • freemarker简介_动力节点Java学院整理

    Freemarker简介 什么是Freemarker Freemarker是一款模板引擎,采用简单的模板语法,可将静态模板文件与动态数据结合生成动态页面,是JSP技术的替代品之一。它主要有以下特点: 简单易用,模板语法简洁明了。 完全分离表述式和具体数据,具有较高的可扩展性。 支持多种模板文件的格式,如HTML、XML、JSON、CSV等。 采用了一种类似于…

    Java 2023年6月15日
    00
  • 利用java读取web项目中json文件为map集合方法示例

    以下是“利用java读取web项目中json文件为map集合方法示例”的完整攻略: 1. 引入依赖 首先需要引入jackson的依赖,可以使用Maven等项目管理工具来自动引入依赖,也可以手动下载jar包引入到项目中。具体的依赖代码如下: <dependency> <groupId>com.fasterxml.jackson.core…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部