import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner; public class VirtualCalendar { private static Scanner scanner; public static void main(String[] args) throws ParseException {
try {
System.out.println("请输入年份(例:2016)");
scanner = new Scanner(System.in);
int year = Integer.parseInt(scanner.nextLine());
printCalendarOfAYear(year);
} catch (ParseException e) {
e.printStackTrace();
} } /**
* 打印星期
*/
public static void printWeekLine() {
System.out.println("日\t一\t二\t三\t四\t五\t六");
} /**
* 打印某一年所有月份的日历
* @param year 年份
* @throws ParseException
*/
public static void printCalendarOfAYear(int year) throws ParseException {
for (int i = 1; i <= 12; i++) {
System.out.println("┍————————————————————————————————┑");
System.out.println("♫\t\t\t" + i + "月" + "\t\t\t ♫");
System.out.println("┕————————————————————————————————┙");
printWeekLine();
printCalendarOfAMonth(year, i); }
} /**
* 打印某年某月的日历
* @param year 年份
* @param month 月份
* @throws ParseException
*/
public static void printCalendarOfAMonth(int year, int month)
throws ParseException {
DateFormat dateFormate = new SimpleDateFormat("yyyy-MM-dd");
String dataString = year + "-" + month + "-" + "01";
Date date = dateFormate.parse(dataString);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 1; i <= days; i++) {
int week = calendar.get(Calendar.DAY_OF_WEEK);
if (i == 1) {
for (int j = 0; j < week - 1; j++) {
System.out.print("*\t");
}
}
System.out.print(i);
if (week == Calendar.SATURDAY) {
System.out.print("\n");
} else {
System.out.print("\t");
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
System.out.println();
System.out.println();
}
}

运行后的结果

请输入年份(例:2016)
2001
┍————————————————————————————————┑
♫ 1月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* 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 ┍————————————————————————————————┑
♫ 2月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * * 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 ┍————————————————————————————————┑
♫ 3月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * * 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 ┍————————————————————————————————┑
♫ 4月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
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 ┍————————————————————————————————┑
♫ 5月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * 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 ┍————————————————————————————————┑
♫ 6月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * * * 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 ┍————————————————————————————————┑
♫ 7月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
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 ┍————————————————————————————————┑
♫ 8月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * 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 ┍————————————————————————————————┑
♫ 9月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * * * * 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 ┍————————————————————————————————┑
♫ 10月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* 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 ┍————————————————————————————————┑
♫ 11月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * * 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 ┍————————————————————————————————┑
♫ 12月 ♫
┕————————————————————————————————┙
日 一 二 三 四 五 六
* * * * * * 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

此示例主要使用Calendar 类及DataFormate列的子类的使用

Java简易日历的实现的更多相关文章

  1. js基础练习二之简易日历

    今天学到了js基础教程3,昨天的课后练习还没来的及做,这个是类似简易日历的小案例,视频还没听完,今晚继续...... 先看效果图: 其实做过前面的Tab选项卡,这个就很好理解了,通过鼠标放在不同月份月 ...

  2. javascript中Date对象的应用——简易日历的实现

    × 目录 [1]效果 [2]HTML [3]CSS[4]JS 前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 ...

  3. js简易日历

    js简易日历中设计的知识点:选项卡切换   数组    innerHTML  连接符 与选项卡的区别:div的个数不同 连接符中需要注意的:(优先级) "abc"+12+3+&qu ...

  4. 使用MVVM框架avalon.js实现一个简易日历

    最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简易日历,毕竟也是第一次造日历这种轮子,所以这里记录下我当 ...

  5. c语言的简易日历

    用c语言编写的简易日历,代码如下: #include <stdio.h> int main(int argc, const char * argv[]) { // insert code ...

  6. java简易编辑器

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  7. avalon.js实现一个简易日历

    使用MVVM框架avalon.js实现一个简易日历   最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简 ...

  8. 利用JavaScript制作简易日历

    <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <met ...

  9. 原生Js_制作简易日历

    javascript制作简易日历,月份信息已经放在一个数组中,在<script>...</script>中编写代码实现其功能 实现步骤 a) 获取需要操作的dom对象 b) 在 ...

随机推荐

  1. sql 补齐字段位数

    select top 100 lmdte, right(replicate('0',6)+ltrim(lmtme),6) from smtpdsum where lmdte <> 0

  2. 1、Python基本概念

    1.数 python中有4种类型的数--整数.长整数.浮点数和复数 2.字符串 单引号.双引号或者三引号包含的字符序列,如: 'char' #单引号 "char" #双引号 ''' ...

  3. canvas调用scale或者drawImage图片操作后,锯齿感很明显的解决

    <script type="text/javascript"> //解决canvas画画图片 var mengvalue = -1; var phoneWidth = ...

  4. [连载]《C#通讯(串口和网络)框架的设计与实现》- 13.中英文版本切换设计

    目       录 第十三章     中英文版本切换设计... 2 13.1        不用自带的资源文件的理由... 2 13.2        配置文件... 2 13.3        语言 ...

  5. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  6. iOS网络1——NSURLConnection使用详解

    原文在此 一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetw ...

  7. Web性能优化:基本思路和常用工具

    听了荣华的演讲之后,我对性能优化有了更深层次的认识. 性能优化的重要性 性能优化是为了赢得用户,为了降低成本. 性能优化思路 Web常见优化点   Java常见排查工具  

  8. EF里如何定制实体的验证规则和实现IObjectWithState接口进行验证以及多个实体的同时验证

    之前的Code First系列文章已经演示了如何使用Fluent API和Data Annotation的方式配置实体的属性,比如配置Destination类的Name属性长度不大于50等.本文介绍E ...

  9. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  10. 使用Nexus搭建Maven本地仓库

    阅读目录 序 Nexus 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 在工作中可能存在有 ...