本文实例讲述了Java实现按年月打印日历功能。分享给大家供大家参考,具体如下:

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class CalendarBook {

public static void main(String[] args) throws ParseException {

CalendarBook cb = new CalendarBook();

cb.printWeekTitle();

cb.printCalendar(2018, 3);

}

public void printCalendar(int year, int month) throws ParseException {

String monthStr; // 格式化月份,因为要转成yyyyMMdd格式的

if (month < 10) {

monthStr = "0" + month;

} else {

monthStr = month + ""; // 数字跟字符串拼接转成字符串格式

}

String yearMonthStr = year + monthStr;

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

Calendar calendarEnd = Calendar.getInstance();

Calendar calendarStart = Calendar.getInstance();

// 根据年份和月份得到输入月份有多少天

int monthDays = getMonthLastDay(year, month);

// 月初的date字符串

String dateStartStr = yearMonthStr + "01";

// 月末的date字符串

String dateEndStr = yearMonthStr + monthDays;

Date startDate = sdf.parse(dateStartStr);

Date endDate = sdf.parse(dateEndStr);

calendarStart.setTime(startDate);

calendarEnd.setTime(endDate);

// 得到输入月份有多少周

int weeks = calendarEnd.get(Calendar.WEEK_OF_MONTH);

// 得到当月第一天是星期几,这里周日为第一天,从1开始,周一则为2

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

int day = 1;

// 当月的第一周做特殊处理,单独打印一行

for (int i = 1; i <= 7; i++) {

if (i >= dayOfWeek) {

System.out.print(" " + day + " ");

day++;

} else {

System.out.print(" ");

}

}

System.out.println();

// 开始打印从第二周开始的日期

for (int week = 1; week < weeks; week++) {

for (int i = 1; i <= 7; i++) {

if (day > monthDays) {

break;

}

if (day < 10) {

System.out.print(" " + day + " ");

} else {

System.out.print(day + " ");

}

day++;

}

System.out.println();

}

}

public int getMonthLastDay(int year, int month) {

int monthDay;

int[][] day = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },

{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

// 闰年

monthDay = day[1][month];

} else {

monthDay = day[0][month];

}

return monthDay;

}

public void printWeekTitle() {

System.out.println("日" + " " + "一" + " " + "二" + " " + "三"

+ " " + "四" + " " + "五" + " " + "六");

}

}

运行结果截图(运行效果,字体大小5号最佳):

PS:这里再为大家推荐几款关于日期与时间计算的在线工具供大家参考使用:

希望本文所述对大家java程序设计有所帮助。

java输入年月输出日历_Java实现按年月打印日历功能【基于Calendar】相关推荐

  1. java输入和输出路径_Java输入输出

    Java输入输出学习 File类 File类是java.io包下代表与平台无关的文件和目录,也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成.值得指出的是,不管是文件还是目录都是使 ...

  2. Java输入字符串输出成语_java - 在Java中,你怎么把这种模式/成语? - SO中文参考 - www.soinside.com...

    我的Java库提供了一个实现类SomethingClient接口SomethingClientImpl.该接口包含将被应用调用,如你所期望的方法. 但是有一个"镜像"接口Somet ...

  3. java 输入五种水果_java代码,实现输入编号,输出对应水果的单价~~~~

    总结:总感觉有问题,因为输出我写的太不对劲了,直接把price的价格写了出来然输出显示-- package com.badu; import java.util.Scanner; //从键盘输入次数, ...

  4. Java输入月份输出季节

    首先创建一个扫描器(scanner),用来接收用户输入的数据到程序中,用switch-case语句用于判断选择.但我刚开始忘记添加default语句提示用户输入正确的月份(1-12月)好在及时发现并改 ...

  5. Java——输入与输出

    本文将对Java中输入与输出的使用方法进行介绍 一.输出 在控制台进行输出 System.out.println("Hello Java"); // 输出后换行 System.ou ...

  6. java输入数字返回字符串_java Scanner输入数字、字符串

    package java05; import java.util.Scanner;//1.导包 /* Scanner类的功能,可以实现键盘输入数据,到程序当中 引用类型的一班使用步骤: 1.导包 2. ...

  7. java 检索编号输出信息_java,_java 如何解析txt文档,输入检索信息,然后输出,java - phpStudy...

    java 如何解析txt文档,输入检索信息,然后输出 请输入代码需求: 请解析config.txt,文件格式包括段落名称.字段名称和字段值.段落名称的值为:"segment:"右边 ...

  8. java输入年份的函数_JAVA 中输入年份和月份输出月历 我才学java EditPlus 编译通过...

    importjava.util.Scanner;classYear{publicstaticvoidmain(String[]args){inty,m,i=0;Scannerscan=newScann ...

  9. java输入月份求天数_java输入年份,月份,输出当月天数

    package 第二次作业; public class 第二题 {                                      //java文件名 public static void ...

  10. java输入名字和语句_java编程一个输入名字,使得可以输出区分姓和名

    展开全部 帮你写了一个,实现基e5a48de588b662616964757a686964616f31333332643961本功能,加了一点基本的输入错误判断.需要其他更细节的部分可以自己完成.im ...

最新文章

  1. 小巨型计算机应用什么领域,计算机应用基础 10
  2. 如何预编译 Android 模拟器专用内核
  3. 相对于oracle数据库的作用 类似于,郑州大学软件技术学院Oracle试卷
  4. nodejs之处理GET请求
  5. linux 多个文件中查找字符串
  6. Application Wizard生成的项目文件简介
  7. EF Ccore 主从配置 最简化
  8. 安卓系统管理软件_便捷仓库管理软件智能管理系统
  9. 从本科到研究生,看大疆工程师给你定制的机器人学习计划
  10. 华为s5500t服务器硬盘,HuaweiOceanStor1T SAS 7.2K3.5寸WD1003FBYXS5500T存储硬盘
  11. Python实现截图AI文字识字小工具
  12. 什么是SPU、SKU、SKC、ARPU
  13. Serv-U无法上传文件,200、227、501报错解决方法
  14. GitHub设置代理 提升速度
  15. sublime text 打开txt文档乱码问题
  16. 洗头冲水时冲下好些头发,我是要秃了吗?
  17. MyBatis一发入魂(一)
  18. Java concurrent包中常用的类
  19. 英飞凌硅麦焊接注意事项
  20. 什么是远程桌面?远程桌面软件是如何进行连接工作的?

热门文章

  1. roseha 11 用VM虚拟机创建集群测试
  2. 【西汉文学】之《贾谊·过秦论》
  3. python 物理引擎_第十六章:物理引擎
  4. Chrome 暴力猴下载与安装
  5. 软件安全测试--详细总结
  6. JavaMail概述
  7. iPad2如何从iOS6降级到5.1.1
  8. 如何设计一个高并发的分布式系统架构
  9. Windows11安装安卓子系统WSA及安卓应用
  10. codeblocks13.12汉化