当前位置:首页 > Java

如何用java打印日历

2026-03-18 15:22:07Java

如何用java打印日历

打印日历的Java实现方法

打印日历可以通过Java的Calendar类或LocalDate类实现。以下是两种不同的实现方式:

如何用java打印日历

使用Calendar

import java.util.Calendar;

public class PrintCalendar {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);

        printCalendar(year, month);
    }

    public static void printCalendar(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month, 1);

        int startDay = calendar.get(Calendar.DAY_OF_WEEK);
        int numberOfDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        System.out.println("Sun Mon Tue Wed Thu Fri Sat");

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

        for (int i = 1; i <= numberOfDays; i++) {
            System.out.printf("%3d ", i);
            if ((i + startDay - 1) % 7 == 0) {
                System.out.println();
            }
        }
    }
}

使用LocalDate类(Java 8+)

import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Locale;

public class PrintCalendar {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();
        printCalendar(date.getYear(), date.getMonthValue());
    }

    public static void printCalendar(int year, int month) {
        LocalDate date = LocalDate.of(year, month, 1);
        String monthName = date.getMonth().getDisplayName(TextStyle.FULL, Locale.getDefault());

        System.out.println("     " + monthName + " " + year);
        System.out.println("Su Mo Tu We Th Fr Sa");

        int startDay = date.getDayOfWeek().getValue() % 7;
        int lengthOfMonth = date.lengthOfMonth();

        for (int i = 0; i < startDay; i++) {
            System.out.print("   ");
        }

        for (int i = 1; i <= lengthOfMonth; i++) {
            System.out.printf("%2d ", i);
            if ((i + startDay) % 7 == 0) {
                System.out.println();
            }
        }
    }
}

自定义日历打印功能

如果需要更灵活的日历打印功能,可以扩展上述代码:

public static void printCustomCalendar(int year, int month, int startDayOffset) {
    LocalDate date = LocalDate.of(year, month, 1);
    int startDay = (date.getDayOfWeek().getValue() + startDayOffset) % 7;
    int lengthOfMonth = date.lengthOfMonth();

    String[] dayNames = {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"};
    for (String day : dayNames) {
        System.out.print(day + " ");
    }
    System.out.println();

    for (int i = 0; i < startDay; i++) {
        System.out.print("   ");
    }

    for (int i = 1; i <= lengthOfMonth; i++) {
        System.out.printf("%2d ", i);
        if ((i + startDay) % 7 == 0) {
            System.out.println();
        }
    }
}

注意事项

  • 月份在Calendar类中是从0开始计数的(0=一月,11=十二月)
  • LocalDate的月份是从1开始计数的(1=一月,12=十二月)
  • 星期几的表示方式在不同地区可能不同,可以通过Locale参数调整
  • 输出格式可以根据需要调整空格和换行符

这两种方法都可以实现基本的日历打印功能,LocalDate版本更现代且线程安全,推荐在Java 8及以上版本使用。

标签: 如何用日历
分享给朋友:

相关文章

vue实现日历插件

vue实现日历插件

Vue 日历插件实现方案 使用现成组件库 推荐直接使用成熟的 Vue 日历组件,如: V-Calendar:专为 Vue 设计的轻量级日历组件 FullCalendar:功能强大的日历库,有 Vue…

基于vue实现日历

基于vue实现日历

实现基础日历结构 使用Vue的模板语法构建日历的HTML结构,通常包含星期标题和日期格子。月份切换按钮通过v-on绑定事件。 <template> <div class="ca…

vue如何实现日历

vue如何实现日历

使用第三方库(如 FullCalendar) FullCalendar 是一个功能强大的日历库,支持 Vue 集成。安装依赖后,通过组件的方式引入日历功能。配置事件、日期范围和交互逻辑可以通过 pro…

vue实现日历人员值班

vue实现日历人员值班

实现日历人员值班功能 日历人员值班功能可以通过Vue结合第三方日历组件或自定义实现。以下是一种基于FullCalendar的实现方案。 安装依赖 需要安装@fullcalendar/vue及相关插件…

vue实现iview日历显示

vue实现iview日历显示

实现步骤 安装必要的依赖库iview和vue。通过npm或yarn进行安装: npm install iview vue 在main.js中引入iview并注册组件: import Vue fro…

如何用vue实现前端

如何用vue实现前端

Vue.js 前端开发实现方法 环境搭建与项目初始化 安装 Node.js 和 npm/yarn 作为基础环境 使用 Vue CLI 创建项目:vue create project-name 选择预设…