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. 使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

    打开PD软件: 1.新建概念模型(conceptual Data Model) File-->New Model-->Conceptual Data Mode 或者点击工作区,右键--&g ...

  2. C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...

  3. instanceof 运算符

    java中的instanceof=======>二元运算符 用法: result = object instanceof class 参数: result 是boolean类型 object 是 ...

  4. Jquery更改table中的内容(一)

    css部分: .tab{ border:solid 1px #00aaee; text-align: left; margin:20px;}.tab tr{ border-top: solid 1px ...

  5. Android Weekly Notes Issue #223

    Android Weekly Issue #223 September 18th, 2016 Android Weekly Issue #223 本期内容包括: Offline时间戳处理; Acces ...

  6. IOS 网络浅析-(十一 三方 AFNetworking3.0简介)

    AFNetworking3.0是目前最新的版本,本来打算介绍一下2.6,但是想想2.6名不久矣,就决定不介绍了,有兴趣的小伙伴可以上网查一查.下面我就开始进入正题了. 目前使用人数最多的第三方网络库, ...

  7. 关于React的父子组件通信等等

    //==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...

  8. mysql半同步复制问题排查

    1.问题背景      默认情况下,线上的mysql复制都是异步复制,因此在极端情况下,主备切换时,会有一定的概率备库比主库数据少,因此切换后,我们会通过工具进行回滚回补,确保数据不丢失.半同步复制则 ...

  9. Excel公式 提取文件路径后缀

    我们在代码中获取一个文件路径的后缀,是一个很简单的事. 如C#中,可以通过new FileInfo(filePath).Extension,或者Path.GetExtension(filePath)获 ...

  10. VS 插件ReSharper10 破解注册方法(转)

    ReSharper 10.0.0.1 Ultimate 完美破解补丁使用方法,本资源来自互联网,感谢吾乐吧软件站的分享. ReSharper是一款由jetbrains开发的针对C#, VB.NET, ...