Java简易日历的实现
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简易日历的实现的更多相关文章
- js基础练习二之简易日历
今天学到了js基础教程3,昨天的课后练习还没来的及做,这个是类似简易日历的小案例,视频还没听完,今晚继续...... 先看效果图: 其实做过前面的Tab选项卡,这个就很好理解了,通过鼠标放在不同月份月 ...
- javascript中Date对象的应用——简易日历的实现
× 目录 [1]效果 [2]HTML [3]CSS[4]JS 前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 ...
- js简易日历
js简易日历中设计的知识点:选项卡切换 数组 innerHTML 连接符 与选项卡的区别:div的个数不同 连接符中需要注意的:(优先级) "abc"+12+3+&qu ...
- 使用MVVM框架avalon.js实现一个简易日历
最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简易日历,毕竟也是第一次造日历这种轮子,所以这里记录下我当 ...
- c语言的简易日历
用c语言编写的简易日历,代码如下: #include <stdio.h> int main(int argc, const char * argv[]) { // insert code ...
- java简易编辑器
package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...
- avalon.js实现一个简易日历
使用MVVM框架avalon.js实现一个简易日历 最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简 ...
- 利用JavaScript制作简易日历
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <met ...
- 原生Js_制作简易日历
javascript制作简易日历,月份信息已经放在一个数组中,在<script>...</script>中编写代码实现其功能 实现步骤 a) 获取需要操作的dom对象 b) 在 ...
随机推荐
- C#开发微信门户及应用(36)--微信卡劵管理的封装操作
前面几篇介绍了微信支付方面的内容,本篇继续微信接口的一些其他方面的内容:卡劵管理.卡劵管理是微信接口里面非常复杂的一个部分,里面的接口非常多,我花了不少时间对它进行了封装处理,重构优化等等工作,卡劵在 ...
- C#开发微信门户及应用(10)--在管理系统中同步微信用户分组信息
在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码,希望从更高一个层次,向大家介绍微信的应用 ...
- Android事件总线
Android中Activity.Service.Fragment之间的相互通信比较麻烦,主要有以下一些方法: (1)使用广播,发送者发出广播,接收者接收广播后进行处理: (2)使用Handler和M ...
- Prime Generator
Peter wants to generate some prime numbers for his cryptosystem. Help him! Your task is to generate ...
- 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
做WEB项目,一定都用过JSP这个大牌.Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的.当你从一个传统的Spring MVC项目转入一个Spring Boot ...
- 利用Spring AOP机制拦截方法一例
直接上代码: @Aspect // for aop @Component // for auto scan @Order(0) // execute before @Transactional pub ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- 新手入门Underscore.js 中文(template)
Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了javaScript的编程.MVC框架Backbone.js就将这个库作为自 ...
- 学习笔记 UpdateXml() MYSQL显错注入
在学习之前,需要先了解 UpdateXml() . UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是Stri ...
- Unicode简介
计算机只能处理二进制,因此需要把文字表示为二进制才能被计算机理解和识别. 一般的做法是为每一个字母或汉字分配一个id,然后用二进制表示这个id,存在内存或磁盘中.计算机可以根据二进制数据知道这个id是 ...