Java类库的设计者将保存时间与给时间点命名分开。所以标准Java类库分别包含了两个类:一个是用来表示时间点的Date类;另一个是用来表示日历表示法的LocalDate类。这里简单分析了LocalDate类的使用,即打印一个本月的日历表。熟悉java类库的一些基本操作,以及锻炼程序的设计思路。

首先,这里不能使用构造器来构造LocalDate类的对象,应当使用静态工厂方法代表你调用构造器,并保存在一个对象变量中。

LocalDate的对象实例化

一旦有了一个LocalDate对象,可以用方法getYear、getMonthValue和getDayOfMonth得到年、月和日。

LocalDate的一些方法

看起来这似乎没有多大的意义。因为这正是构造对象时使用的那些值。不过,有时可能某个日期是计算得到的,你希望调用这些方法得到更多信息。例如,plusDays方法会得到一个新的LocalDate对象

plusDays的用法

好,现在就上全部的代码和结果。

全部示例代码

运行结果打印

设计思路是这样的,先获取当前时间,并把当前时间的月和日,保存在month和today变量里。

month和today

然后再找到这个月的第一天。其中,minusDays(LocalDate minusDays(int n))这个方法的意思是,生成当前日期之后或之前的n天,n为正数时,是前n天。这里假设today是2,那么today-1就是1,所以是2号的前1天,也就是1号,为本月的第一天。

date为本月的第一天

得到本月的第一天的作用是为了得到第一天是星期几,这里使用一个了DayOfWeek类型(内部使用的是enum类型表示的星期一到星期日)的变量保存是星期几。我们调用date这个对象的getValue方法来得到星期几的一个数值。这会用到一个整数,按照惯例,周末是一周的末尾,星期一返回1,星期二返回2,依此类推,星期日则返回7。

得到是星期几

由于日历的第一行是缩进的,使得月份的第一天指向相应的星期几。

打印星期目录

打印好第一行并缩进后,开始依次打印对应的号数了。每打印一天就加一天(plusDays(1)),生成的新对象重新引用给date。如果打印到today,使用*号标记。打印到星期天时,需要换行。

开始打印

预打印下一个月份。

换行准备下一个月份

java 打印 日历 详细 注解_Java类库 LocalDate类的简单使用(一)之打印本月的日历...相关推荐

  1. java 打印 日历 详细 注解_java 打印日历

    package com.beiwo.other; /* * 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 1.1900年1月1号开始 * 2.星期 : 直接用总天数对7求余数 ...

  2. java运行时读取注解_Java自定义注解和运行时靠反射获取注解

    转:1.Annotation的工作原理: JDK5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型.该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的API,一个使用注解修饰 ...

  3. java扫描指定package注解_java随笔-扫描使用指定注解的类与方法

    前几天项目中让扫描出所有使用Restful API的方法.刚开始还想着用python过滤关键字来查找的,后来想想可以使用反射来搞的.主要包含以下三个步骤: 根据包名解析包的具体路径 查找指定包下指定注 ...

  4. java常用的集合对象_java常用实体类、集合类

    java常用实体类.集合类 [转自51cto博客jichangwei的BLOG] 1:String类,字符串是常量,他们的值在创建之后不能更改,可以共享. equals()用来比较两个字符串的值,== ...

  5. java class对象创建时机_Java面向对象编程-类的声明周期

    第十章 类的生命周期 10.1 Java虚拟机及程序的生命周期 当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程.Java虚拟机进程从启动到终止的过程,称为Java虚拟机的生命 ...

  6. java color类 蓝色_java中Color类的简单总结

    标签: java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 p ...

  7. java枚举类型季节实例_Java之枚举类

    目录 一.为何引入枚举类型(为了替代魔法值) 什么是魔法值?魔法值有哪些隐患,见另一篇文章编码规约之使用Enum枚举类替代魔法值 那么为什么不用静态变量来替换魔法值呢? 有时候,变量的取值只在一个有限 ...

  8. Java生成和解析二维码工具类(简单经典)

    Java生成和解析二维码工具类 开箱即用,简单不废话. pom.xml引入依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/ ...

  9. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

最新文章

  1. Python学习笔记3 流程控制、迭代器、生成器
  2. vue手机端回退_推荐3个快速开发平台 前后端都有 接私活又有着落了
  3. python 源码安装教程_python安装步骤
  4. 企业即时通讯规模将达7亿
  5. HDU 4540 威威猫系列故事——打地鼠(DP)
  6. [CQOI 2018]社交网络
  7. 中医药古文献语料库设计与开发研究
  8. 黑客是怎么攻击网站的(网站渗透入侵全部教程)
  9. PTA病毒序列C语言
  10. 【干货】从QQ群起家的情趣商城站长之路
  11. 计算机网络嗅探实验,网络嗅探与欺骗实验
  12. 百度地图 地图级别 是什么意思
  13. 蓝桥杯真题(路径)C语言
  14. 定时/计数器的原理和应用
  15. 网络游戏软件销售渠道模式举例及分析
  16. unity将 \u4E00 这种 编码 转汉字 方法
  17. BTC反弹上攻失效 回踩重点关11000
  18. 《GitHub入门与实践》读书笔记
  19. xlsx.js 实现前端 table 数据导出并下载为 excel
  20. android相机分辨率是多少,Android相机套装分辨率

热门文章

  1. WDK李宏毅学习笔记第三周02_高斯分布与逻辑回归编程实践
  2. 谁需要闪光灯? CSS3动画蜘蛛侠卡通
  3. 【echarts地图制作】下钻到乡镇/街道级别的
  4. http报文格式简介
  5. P4 程序设计语法学习
  6. Red and Black 模板题 /// BFS oj22063
  7. 我开始搞研发管理和项目管理了,发现最难管理的还是人
  8. centos7如何安装chrome浏览器?
  9. Java Applet与Java Application的区别
  10. 使用awk提取文本 awk处理条件 awk流程控制 awk扩展应用