自从Java 1.8 开始,提供了新的日期和时间处理对象,使用起来方便很多。对于新项目,推荐使用该API,为了兼容旧项目,原有的API仍然可以继续使用。下面就简单使用新的API打印当月的日历:

package github.banana;

import java.time.DayOfWeek;

import java.time.LocalDate;

/**

* 打印当月日历

*

* @author zhgxun

*/

public class Calendar {

public static void main(String[] args) {

// 本地日期对象

LocalDate date = LocalDate.now();

// 指定一个日期对象

// LocalDate date = LocalDate.of(2017, 10, 5);

// 当前月份值

int month = date.getMonthValue();

// 当月所在的天

int today = date.getDayOfMonth();

// 重置月的天到起始位置, 减去指定的天数, 即是回复到月初第一天

date = date.minusDays(today - 1);

// 当前时间对应的周

DayOfWeek weekday = date.getDayOfWeek();

// 对应周的枚举

int value = weekday.getValue();

// 打印日历标题

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

// 在第一天的空白处打印空白

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

System.out.printf("%4s", " ");

}

// 遍历当月

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);

// 如果是每周的第一天则换行

if (date.getDayOfWeek().getValue() == 1) {

System.out.println();

}

}

// 如果不是每周的第一天无需处理

if (date.getDayOfWeek().getValue() != 1) {

System.out.println();

}

}

}

当月日历:

Mon Tue Wed Thu Fri Sat Sun

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 31

Process finished with exit code 0

java 打印当月日历_74. Java打印当月日历相关推荐

  1. java word打印_如何通过Java打印Word文档

    本文将介绍如何使用Java程序来打印Word文档.打印可分为两种方式:一是打印到物理打印机:二是打印到虚拟打印机. 使用工具:Spire.Doc for Java 测试环境: ●Intellij Id ...

  2. 【分享】java反射获取、设置、打印对象属性,对象转map基础工具

    package com.lion.util; import java.lang.reflect.Field; import java.util.ArrayList; import java.util. ...

  3. java 线程交替输出,[java]java经典问题之线程交替打印数字

    问题 给出两个线程,要求两个线程交替打印从1到100,例如:A线程打印1,B线程打印2,A线程打印3...依次类推,直到打印到100 思路 这里主要是考察对java中wait/notifyAll机制的 ...

  4. HelloWorld.java –打印Hello World的Java程序

    Java Beginners的第一个示例程序用于打印Hello World. 1.简介 在本教程中,我们将学习如何在java中打印" Hello World" . 对于编程语言的初 ...

  5. 打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思路 每次打印矩阵最外面的一圈(用方法printMatrix ...

  6. java实现123n_java三线程交替打印123……n

    使用多线程交替打印1--n,a进程打印1,4,7,--(3n+1),b进程打印2,7,10,--(3n+2),c进程打印3,6,9,--(3n) 涉及到多线程的同步,阻塞,wait,notify 代码 ...

  7. java控制台打印图片_java——控制台输入打印图形

    1. 打印直角三角形 需求说明:从控制台输入直角三角形的高度(行数).每行*的数目依次为1.3.5.7等 . 实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件 分析每行打印的内容: 每一 ...

  8. java占位符打印_什么是 Java 构造器?

    构造器是编程的强大组件.使用它们来释放 Java 的全部潜力. -- Seth Kenlon(作者) 在开源.跨平台编程领域,Java 无疑(?)是无可争议的重量级语言.尽管有许多 伟大的跨平台 框架 ...

  9. java打印计算机_在Java程序中实现高精度打印

    在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度 ...

最新文章

  1. 李飞飞重返斯坦福后的大动作:开启「以人为中心的AI计划」
  2. 电脑解锁后黑屏有鼠标_笔记本电脑开机黑屏只显示鼠标怎么办?
  3. Toast的基本用法 吐司打印
  4. c# 使用TCP连接(server)
  5. PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表
  6. dapper mysql 批量_MySQL数据库之c#mysql批量更新的两种方法
  7. 计算机组成原理简单选择题,计算机组成原理选择题及答案.doc
  8. UITabBarController详解
  9. dubbo学习之事件通知实践
  10. C语言中函数调用中静态变量的应用
  11. 【做题】TCSRM592 Div1 500 LittleElephantAndPermutationDiv1——计数dp
  12. Java短视频直播APP源码
  13. ireport 实现动态合并单元格
  14. 马云、张小龙、雷军缅怀金庸:江湖路远,侠义长存!
  15. 火狐网页访问https提示安全连接失败
  16. JAVA计算机毕业设计社区生鲜电商平台(附源码、数据库)
  17. 判断计算机硬件和网络故障,计算机硬件故障的识别与处理
  18. 冬季宝宝喝什么最健康?
  19. element上传组建+axios实现文件上传
  20. Unity内存与资源管理

热门文章

  1. Packet Tracer的使用(一)
  2. CheckBox和CheckBoxList练习
  3. 工厂模式的缺点及解决到生产的应用
  4. 干货分享--企业微信社群促活的12种方式
  5. 技术VS管理,哪个更重要?
  6. SmallTalkEDI程序
  7. openpnp - configure - Connect the driver to your controller
  8. Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯...
  9. DropDownList 控件
  10. C++代码中R“(xxxxxxxxxxx)“