一、概念

Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

【提示】月份的表示,一月是0,二月是1,以此类推,12月是11。 因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表

示月份:JANUARY、FEBRUARY等。

【代码示例】

 /*
*测试日历 Calendar类(抽象类)及GregorianCalendar公历类 (具体实现类)
*/
package cn.sxt.test; import java.util.*; public class Test_0317_CalenderClass {
public static void main(String[] args) { /*//获取年月日等相关信息
Calendar calendar=new GregorianCalendar(2019,03,20,10,00,10);//注意! 这里的3其实表示的是4月(数字+1=实际月份)
System.out.println(calendar.get(Calendar.YEAR));//获得年份
System.out.println(calendar.get(Calendar.MONTH));//获得月份 0-11表示1-12月
System.out.println(calendar.get(Calendar.DATE));//获得月份 0-11表示1-12月
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//获得星期几 1-7 分别表示星期日-星期六 19年4月20为星期六,结果输出7 正确 //设置年月日等相关信息
Calendar calendar2=new GregorianCalendar();
calendar2.set(2049, 10, 1);
System.out.println(calendar2);
calendar2.add(Calendar.YEAR, 10);//在calendar2日期的基础上加10年; 年月日同理都可以这样设置
calendar2.add(Calendar.YEAR, -10);//在calendar2日期的基础上减去10年 //日期对象和时间对象相互转化
Date d1=calendar.getTime();
Calendar calendar3=new GregorianCalendar();
calendar3.setTime(new Date());
*/
Calendar calendar=new GregorianCalendar(2019,03,21,10,00,10); //实际上日期判断是4月21是星期几
//Calendar calendar2=calendar.getInstance();//获取系统当前时间 但是月份需要加1才为正确结果
printCalendar(calendar); } public static void printCalendar(Calendar c){
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;//为了表达真实想法,月份后边+1
int date=c.get(Calendar.DATE);
int dayweek=c.get(Calendar.DAY_OF_WEEK)-1;//电脑中 1-7 是周日到周六 所以可以做个处理 减1符合习惯
String dayString= (dayweek==0?"日":dayweek+""); //a?b:c 含义如果 a的值判定为 true,则表达式返回 b的值,否则返回 c的值。 int hour=c.get(Calendar.HOUR);//时分秒
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
System.out.printf("%d年%d月%d日,星期%s %d:%d:%d\n", year, month, date, dayString, hour, minute, second); } }

【日历小程序】

 /*
*日历小程序
*/
package cn.sxt.test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Test_0317_Calender {
public static void main(String[] args) throws ParseException {
//String str="2019-3-17"; 实现键盘交互
System.out.println("请输入日期(格式为:2019-3-21):");
Scanner scanner=new Scanner(System.in);
String str=scanner.nextLine(); DateFormat df=new SimpleDateFormat("yyyy-MM-dd");//"把【时间对象】按照格式字符串输出 " 格式化输出日期
//给定一个字符串,转成一个日期类 parse: (英语意思)从语法上描述或分析
Date date=df.parse(str); //parse: 按指定的源格式把String转换为Date类的对象date(格式为:Thu Nov 01 18:27:06 CST 2018)
//Calendar calendar=new GregorianCalendar(2019,03,21,10,00,10);这句话中的实际日期是2019年4月21日 注意区别
//以下2句,则是把我们实际真实想要表达的时间如19年3月21日给设置进去,且可以输出正确结果
Calendar calendar=new GregorianCalendar();
calendar.setTime(date); int day=calendar.get(Calendar.DAY_OF_MONTH);//把对象calendar中的日期取出来
//getActualMaximum函数,主要是用于获取一个指定日期的当月总天数 get(Calendar.DATE);获取给定日期中的具体天数如给定的17号
//如果把这步省去,直接让第二个for循环i<=calendar.getActualMaximum(Calendar.DATE),则会多打印下个月的前几天,注意!
int days=calendar.getActualMaximum(Calendar.DATE); System.out.println("日\t一\t二\t三\t四\t五\t六\t"); calendar.set(calendar.DAY_OF_MONTH, 1);//把对象calendar先置为1号 /*星期日对应数字1,星期六对应数字7,假如给定的日期所在月份的1号是星期四(对应数字5),则理应在前边先输出4个制表符(代表星期日、
星期一、星期二、星期三),然后再输出1号所在的星期即星期四才符合常理 */
for(int i=1;i<=calendar.get(Calendar.DAY_OF_WEEK)-1;i++){
System.out.print("\t");
} for(int i=1;i<=days;i++){
if(day == calendar.get(Calendar.DAY_OF_MONTH)){
System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"*\t");//给定日期后边多加个*
}else {
System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"\t");
}
if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){//如果对象calendar执行完, 恰好为周六则换行
System.out.println(); }
calendar.add(Calendar.DAY_OF_MONTH, 1);//执行完上步后,每次打印完后日期加1。初始日期为1号
} } }

[19/03/17-星期日] 常用类_Calendar日历类&GregorianCalendar公历日历类的更多相关文章

  1. [19/03/12-星期二] 数组_遍历(for-each)&复制&java.util.Arrays类

    一.遍历 for-each即增强for循环,是JDK1.5新增加的功能,专门用于读取数组或集合中所有的元素,即对数组进行遍历. //数组遍历 for-each public class Test_03 ...

  2. deepin 15.11 升级docker-ce 18.01到19.03.1,升级docker compose 1.23到1.24.1

    1.升级docker compose ,docker官方安装方法 $ sudo curl -L "https://github.com/docker/compose/releases/dow ...

  3. [RHEL8]安装Docker Problem: package docker-ce-3:19.03.6-3.el7.x86_64 requires containerd.io

    系统环境 # cat /etc/redhat-release Red Hat Enterprise Linux release 8.0 (Ootpa) 安装依赖 # yum install -y yu ...

  4. fedora30平台安装docker 19.03

    一,下载docker 1,说明:docker的打包对于fedora的支持很及时, 所以在fedora 30/31上都可以直接使用官方的rpm包 下载地址: https://download.docke ...

  5. [19/03/28-星期四] IO技术_基本概念&字符编码与解码

    一.概念 输入(Input)  指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据) 常见的应用: Ø 读取硬盘上的文件内容到程序.例如:播放器打开一个视频文件.word打开一个do ...

  6. Oracle '26-2月 -19 03.34.47.000000 下午' 字符串日期解析

    Oracle数据库, 时间字段是varchar2类型, 存储了 '26-2月 -19 03.34.47.000000 下午' 格式(TIMESTAMP 数据类型)的字符串日期, 将其解析为yyyy-M ...

  7. 乌班图docker版本18.04升级到19.03

    # 关闭docker sudo systemctl stop docker # 卸载旧版本: sudo apt-get purge docker-ce # 安装新版本 sudo apt update ...

  8. centos 7.4 安装docker 19.03.6 版本。附带离线安装包

    说明: 1.此环境为未安装过docker服务的环境, 如果已经安装,则自行卸载. 2.以下环境中上传的包及离线yum源默认为/home目录下,如无特殊说明,以此目录为准 步骤一:下载docker离线安 ...

  9. Centos8安装Docker提示:package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed

    Centos8安装Docker提示:package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but ...

随机推荐

  1. 单元测试框架AndroidTestCase

    我不是讲怎么成为一个安卓测试员,就不写那么多了 就写我们常用的, AndroidTestCase 为一Android平台下通用的测试类,它支持所有JUnit的Assert方法和标准的setUp 和te ...

  2. Java网站开发的一些问题以及解决(cookie消失,上传头像,js等)

    1.首先是cookie的问题,很多人都是遇到了将数据存储到cookie中并且add到response之中,但是还有返回其他页面或者刷新页面cookie消失的情况,除了设置cookie的存活时间外, 还 ...

  3. 我的博客已经迁移到csdn

    博客已经迁移csdnhttp://blog.csdn.net/u013372900 博客园我很喜欢是源于他的可扩展性,可以自己去改,但遗憾的是博客园的速度似乎不是很给力.IT能有今天的 发展是源于无数 ...

  4. C#(Winform)的Show()和ShowDialog()方法

    1. 显示窗口的两种方式: Winform中的Form,在显示窗口时,可以使用Show()和ShowDialog()两种方式 2. 非模态窗口方式(可以跟其他界面自由切换,而且不阻塞代码) Show( ...

  5. 使用pygame开发一个弹幕射击游戏(一)

    本文作为开发过程记录用. 目前游戏画面: 下一个添加的功能:敌机可以进行射击. 弹幕类 from pygame.sprite import Sprite from pygame import tran ...

  6. java使用poi.3.10读取excel 2003 (xls格式)

    最近在做一个Excel导入数据库的案例,整理文档出来供大家参考. 1.下载 最新的 poi http://poi.apache.org/download.html    2.解压 把相关jar包引进项 ...

  7. OGNL,表达式上下文ContextMap

    1.OGNL表达式 object graph navigation language:对象图导航语言 存取对象属性:调用对象方法:字段类型转换等. <input type="text& ...

  8. vue分页

    1.依赖文件 <link href="/css/index.css" rel="stylesheet" type="text/css" ...

  9. 两个command的疑惑

    1.在cqrs模式中有command和query command  命令  没有返回值,但会更改对象的状态 query 查询  有返回值  但不会改变用户的状态,对下同而言没有副作用 2.在今天的实际 ...

  10. Resharper 的快捷键

      编辑   Ctrl + Space 代码完成 Ctrl + Shift + Space代码完成 Ctrl + Alt + Space代码完成 Ctrl + P 显示参数信息 Alt + Inser ...