显示当前月的日历(摘自java核心技术.卷I)
来源:互联网 发布:ftp上传工具 for mac 编辑:程序博客网 时间:2024/06/09 18:51
import java.text.DateFormatSymbols;
import java.util.*;
/**
* @version 1.4 2007-04-07
* @author Cay Horstmann
*/
public class CalendarTest
{
public static void main(String[] args)
{
// construct d as current date
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);//返回此时是当月的某天
int month = d.get(Calendar.MONTH);//返回当月月份
// set d to start date of the month
d.set(Calendar.DAY_OF_MONTH, 1);//指向当月的第一天
int weekday = d.get(Calendar.DAY_OF_WEEK);//获得这天是周几
// get first day of week (Sunday in the U.S.)
int firstDayOfWeek = d.getFirstDayOfWeek(); //获得当前地区星期的起始日,一般是周日,在欧洲是周一
// determine the required indentation for the first line
int indent = 0;//第一行需要缩进的距离
while (weekday != firstDayOfWeek)
{
indent++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}//如果该月第一天不是一周的第一天,则将日历对象的日减一,知道一个星期的第一天为止。
// print weekday names
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();//返回用户语种所命名的表示星期几的缩写字符串
do
{
System.out.printf("%4s", weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while (weekday != firstDayOfWeek);//循环打印标题行,也就是“星期日”到“星期六”
System.out.println();
for (int i = 1; i <= indent; i++)
System.out.print(" ");//打印缩进距离
d.set(Calendar.DAY_OF_MONTH, 1);//将日历再次设为一个月的起始日
do
{
// print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
// mark current day with *
if (day == today) System.out.print("*");
else System.out.print(" ");
// advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
// start a new line at the start of the week
if (weekday == firstDayOfWeek) System.out.println();
}
while (d.get(Calendar.MONTH) == month);
// the loop exits when d is day 1 of the next month
// print final end of line if necessary
if (weekday != firstDayOfWeek) System.out.println();
}
import java.util.*;
/**
* @version 1.4 2007-04-07
* @author Cay Horstmann
*/
public class CalendarTest
{
public static void main(String[] args)
{
// construct d as current date
GregorianCalendar d = new GregorianCalendar();
int today = d.get(Calendar.DAY_OF_MONTH);//返回此时是当月的某天
int month = d.get(Calendar.MONTH);//返回当月月份
// set d to start date of the month
d.set(Calendar.DAY_OF_MONTH, 1);//指向当月的第一天
int weekday = d.get(Calendar.DAY_OF_WEEK);//获得这天是周几
// get first day of week (Sunday in the U.S.)
int firstDayOfWeek = d.getFirstDayOfWeek(); //获得当前地区星期的起始日,一般是周日,在欧洲是周一
// determine the required indentation for the first line
int indent = 0;//第一行需要缩进的距离
while (weekday != firstDayOfWeek)
{
indent++;
d.add(Calendar.DAY_OF_MONTH, -1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}//如果该月第一天不是一周的第一天,则将日历对象的日减一,知道一个星期的第一天为止。
// print weekday names
String[] weekdayNames = new DateFormatSymbols().getShortWeekdays();//返回用户语种所命名的表示星期几的缩写字符串
do
{
System.out.printf("%4s", weekdayNames[weekday]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
}
while (weekday != firstDayOfWeek);//循环打印标题行,也就是“星期日”到“星期六”
System.out.println();
for (int i = 1; i <= indent; i++)
System.out.print(" ");//打印缩进距离
d.set(Calendar.DAY_OF_MONTH, 1);//将日历再次设为一个月的起始日
do
{
// print day
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
// mark current day with *
if (day == today) System.out.print("*");
else System.out.print(" ");
// advance d to the next day
d.add(Calendar.DAY_OF_MONTH, 1);
weekday = d.get(Calendar.DAY_OF_WEEK);
// start a new line at the start of the week
if (weekday == firstDayOfWeek) System.out.println();
}
while (d.get(Calendar.MONTH) == month);
// the loop exits when d is day 1 of the next month
// print final end of line if necessary
if (weekday != firstDayOfWeek) System.out.println();
}
}
输出结果类似:
星期日 星期一 星期二 星期三 星期四 星期五 星期六
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
- 显示当前月的日历(摘自java核心技术.卷I)
- 简单的计算器程序(摘自java核心技术.卷I)
- 使用java写一个没有main方法的“Hello World”程序(摘自java核心技术.卷I)
- 使用BitSet查找某个范围内的所有的素数的个数(摘自java核心技术.卷I)
- 显示当前月的日历 1(java实现)
- java编程实现杨辉三角(摘自java核心技术.卷I)
- 一个显示当前月的日历的java小程序
- Java核心技术 卷I 手记(一)
- Java核心技术 卷I 手记(二)
- Java核心技术卷I知识点
- 《Java核心技术 卷I:基础知识(原书第8版)》勘误表
- Java核心技术卷I基础知识-学习笔记(一)
- Java核心技术 ( 卷 I ) 读书笔记(第一~三章)
- Java核心技术(卷I)读书笔记 第四~六章
- Java核心技术(卷I)读书笔记 第七~九章
- 读《JAVA 核心技术》卷I 基础知识(原书第10版)
- Java 核心技术丛书 卷I 学习心得
- 读书笔记-《Java核心技术卷I-基础知识》
- bzoj3232: 圈地游戏 0-1分数规划
- Sharepoint和Frontpage安全审计工具 – Sparty V0.1
- RMAN简明使用手册
- LLVM IR 语法简介(一)
- js学习网址
- 显示当前月的日历(摘自java核心技术.卷I)
- Protection 2 ---- Limit Checking
- 1507 Uncle Tom's Inherited Land* 二分图-----黑白染色+奇偶匹配(1X2的矩形覆盖)
- Oracle 的sql语句多条件判断
- 1 android高级编程——程序启动动画的实现
- Disaster Recovery, High Availability, and Continuous Availability - What's the Difference?
- 记录代码——循环移位
- js代码规范
- Z-Stack协议分析工具之Packet Sniffer