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. asp.net读取模版并写入文本文件

    本文要介绍的是ASP.NET怎样读写文本文件,但更重要的是实现的过程.使用的工具是Visual Studio 2015 ,.NET版本是4.6.1 .一共建立的2个项目,HoverTreePanel和 ...

  2. 数据上下文【 DnContext】【EF基础系列7】

    DBContext: As you have seen in the previous Create Entity Data Model section, EDM generates the Scho ...

  3. Yii 2.x RESTful 应用 - 类图

    配置url管理器配置请求数据解析器配置用户控制器 ['GET', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']

  4. 信贷业务(Ali)

    1.信贷业务视角 信贷业务主要有两个视角,借款人和出资机构.借款人关心借多少钱,还多少钱,多少利息:机构关心信贷资产风险,收益. 领域模型上两个视角分开:个人--->账单.机构--->资产 ...

  5. JavaScript 中的变量命名方法

    三种命名方法 在程序语言中,通常使用的变量命名方法有三种:骆驼命名法(CamelCase),帕斯卡命名法(PascalCase)和匈牙利命名法. 依靠单词的大小写拼写复合词的做法,叫做"骆驼 ...

  6. SVG坐标系统

    SVG的画布.画布视区(viewBox).浏览器视窗的概念 画布 画布是绘制SVG内容的一块区域,理论上在所有维度上都是无限的.(也有人称为"SVG世界",但我觉得叫画布比较合适) ...

  7. eCharts 数据转换json

    public ActionResult ShowChart() { return View(); } <div id="main" style="width:600 ...

  8. 使用ViewPager切换Fragment时,防止频繁调用OnCreatView

    使用ViewPager切换Fragment,我原先使用系统自带的适配器FragmentPagerAdapter. 切换fragment时,频繁调用oncreatview(). 查看FragmentPa ...

  9. pc端与移动端的区别

    移动设备和PC本身有区别: 1.屏幕尺寸不同,屏幕大小导致显示的内容页不一样. 2.网络速度不同:手机分2G.3G.4G.WIFI等,我们要少用图片,JS.动画等等,用户打不开一样起不了作用. 3.使 ...

  10. jTemplates部分语法介绍

    1.{#if} {#if |COND|}..{#elseif |COND|}..{#else}..{#/if} Examples: {#if 2*8==16} good {#else} fail {# ...