当前位置:首页 > 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及以上版本使用。

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

相关文章

css制作日历

css制作日历

使用CSS Grid布局制作日历 日历的布局适合使用CSS Grid实现,因其天然的行列结构。以下是一个基础日历的HTML和CSS代码: <div class="calendar">…

如何用css制作网页

如何用css制作网页

使用CSS制作网页的基本方法 CSS(层叠样式表)用于控制网页的样式和布局。以下是通过CSS设计和美化网页的核心方法: 链接CSS文件 在HTML文件的<head>部分添加外部CSS文件…

vue表格实现日历

vue表格实现日历

Vue 表格实现日历的方法 基础表格结构 使用 el-table 或原生 HTML 表格,通过 v-for 循环生成日历格子。月份天数通过 new Date() 计算,动态渲染表格内容。 &…

vue 日历组件实现

vue 日历组件实现

Vue 日历组件实现 基本结构搭建 使用Vue的单文件组件(SFC)结构,创建一个基础的日历组件框架。需要定义月份、年份的状态管理,以及日期渲染逻辑。 <template> <…

如何用VUE实现倍速

如何用VUE实现倍速

使用Vue实现视频倍速播放 在Vue中实现视频倍速播放可以通过HTML5的<video>元素和Vue的数据绑定功能来完成。以下是实现方法: 安装Vue 确保项目中已经安装Vue。如果没有…

vue实现值班日历

vue实现值班日历

Vue 实现值班日历的方法 使用 FullCalendar 插件 FullCalendar 是一个功能强大的日历插件,支持 Vue 集成。安装依赖: npm install @fullcalenda…