public static void main(String[] args) throws IOException {
//初始化日历对象
Calendar calendar = Calendar.getInstance();
//当前日期
int today = calendar.get(Calendar.DAY_OF_MONTH);
//当前月份
int month = calendar.get(Calendar.MONTH);
//设置日历为当前月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
//获取当前月第一天在当前周的位置
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
//获取当前月第一天所在周的第一天
int firstDayOfWeek = calendar.getFirstDayOfWeek(); //首行缩进天数
int day = 0;
//如果日历当前日期不是所在周的第一天,则循环查找
while(weekDay != firstDayOfWeek){
//缩进天数自加
day++;
//日历当前天数向前减一,例如7月1日,执行之后为6月30日
calendar.add(Calendar.DAY_OF_MONTH, -1);
//获取日历当前日期在一周中的第几天
weekDay = calendar.get(Calendar.DAY_OF_WEEK);
} //获取周天数简称,如星期一,mon等
//根据地区不同显示不同,可以通过Locale.setDefault(Locale.CANADA);设置
String[] arys = new DateFormatSymbols().getShortWeekdays();
//循环打印周天数简称
do{
System.out.print("\t"+arys[weekDay]);
calendar.add(Calendar.DAY_OF_MONTH, 1);
weekDay = calendar.get(Calendar.DAY_OF_WEEK);
}while(weekDay != firstDayOfWeek);
System.out.println(); //根据当前月第一天在周中的天数设置首行缩进
for(int i = 1; i <= day; i++){
System.out.print("\t");
} //设置日历对象时间为当前月第一天,准备打印日历
calendar.set(Calendar.DAY_OF_MONTH, 1); //循环打印日期
do{
int now = calendar.get(Calendar.DAY_OF_MONTH);
System.out.print("\t"+now); //标记出当前日期
if(today == now){
System.out.print("*");
} calendar.add(Calendar.DAY_OF_MONTH, 1);
weekDay = calendar.get(Calendar.DAY_OF_WEEK); //如果处理后的日期是所在周的第一天,则换行
if(weekDay == firstDayOfWeek){
System.out.println();
}
}while(calendar.get(Calendar.MONTH) == month);
}

Java Calendar实现控制台日历的更多相关文章

  1. Java Calendar 注意事项

    Java JDK 提供了java.util.Calendar来处理日期和时间.Calendar是一个抽象类,是所有日历的模板,因此我们可以继承Calendar来实现其他的历法(比如阴历). Java提 ...

  2. Java Calendar 类的时间操作

    Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...

  3. Java Calendar使用总结

    JavaCalendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单. 演示了获取时间,日期时间的累加和累减,以及比较. 原文地址:blog.csdn.NET/joyous/a ...

  4. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(1) Calendar

    Java 操作日期/时间,往往会涉及到Calendar,Date,DateFormat这些类. 最近决定把这些内容系统的整理一下,这样以后使用的时候,会更得心应手.本章的内容是主要讲解“Java时间框 ...

  5. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(2) 自己封装的Calendar接口

    本章主要是收藏一些常用的类和接口,包括:万年历(农历.阳历节日.阴历节日).自定义的Calendar接口. 万年历 源码如下(ChineseCalendar.java): package com.vi ...

  6. Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(5) SimpleDateFormat

    本章介绍SimpleDateFormat. SimpleDateFormat 介绍 SimpleDateFormat 是一个格式化Date 以及 解析日期字符串 的工具.它的最常用途是,能够按照指定的 ...

  7. Java Calendar Date使用总结

    Java Calendar Date使用总结 package cn.outofmemory.codes.Date; import java.util.Calendar; import java.uti ...

  8. Java Calendar 类的时间操作.RP

    JavaCalendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单. 演示了获取时间,日期时间的累加和累减,以及比较. 原文地址:blog.csdn.NET/joyous/a ...

  9. Java Calendar类的使用总结【转】

    感谢!原文地址:https://www.cnblogs.com/huangminwen/p/6041168.html Java Calendar类的使用总结 在实际项目当中,我们经常会涉及到对时间的处 ...

随机推荐

  1. Python: 设计模式 之 工厂模式例(1)

    #!/usr/bin/env python #coding=utf-8 # # 工厂模式一例 # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) ...

  2. 2015_WEB页面前端工程师_远程测题_东方蜘蛛_1

    请使用HTML+CSS实现如下效果: 1. 使用CSS Sprites,实现如图1效果,素材图片为: icons.png: 2. 使用脚本语言验证邮箱.密码的必填以及邮箱的合法性: 若验证失败,则出现 ...

  3. 从零开始学习MySQL1---MySQL基础

    数据库基础 数据库是一个长期存储在计算机内的.有组织的.有共享的.统一管理的.数据集合.它是一个按数据结构来存储和管理数据的计算机软件系统.数据库包含两层含义:保管数据的仓库,以及数据管理的方法和技术 ...

  4. iOS MD5加密算法

    考虑到用户账户安全,对用户的登录密码进行MD5加密 什么是MD5加密呢...懒了就不在这搬砖了,大家可以自己搜索查查,在此记录下代码,以供以后学习查询! 下面,直接上代码... // 需要倒入这个头文 ...

  5. Cocos2d-x 2.0以上版本安装方法

    1,cd 到2dx根目录,MAC平台使用./create-multi-platform-projects.py  然后提示: -bash: ./create-multi-platform-projec ...

  6. Nodejs异步

    http://cnodejs.org/topic/4f16442ccae1f4aa2700113b http://cnodejs.org/topic/4f16442ccae1f4aa27001123 ...

  7. Occupy Cities

    hdu4606:http://acm.hdu.edu.cn/showproblem.php?pid=4606 题意:在一个二维坐标系中,有n个城市,坐标给出来了,然后有p个士兵要去占领这n个城市,但是 ...

  8. 树莓派学习路程No.1 树莓派系统安装与登录 更换软件源 配置wifi

    在官网下载raspbian系统镜像,用Win32DiskImager写入TF卡 Image File 选择系统镜像,Device 选择TF卡盘符,Write即可.这样系统就写好了.把内存卡插进树莓派里 ...

  9. input text的outline属性

    普通的text选中编辑时会出现蓝色的边框,感觉不太美观,怎么去掉呢? 可以在text对应的样式里加入:outline: 0;

  10. 添加Fragment注意事项

    配置(Configuration )改变是Android应用生命周期的一部分,如果发生了该事件(屏幕从横屏换行为竖屏),就会导致Activity被销毁然后重新创建.就算您在配置文件中设定Activit ...