用java打印日历
来自《java核心技术卷一》
/**
* Created by wangbin10 on 2019/1/3.
* 打印当月日历
*/
public class CalendarTest {
public static void main(String[] args) {
GregorianCalendar d = new GregorianCalendar();
/**
* 获取当前日期的月份和日子
* 月份是0~11
*/
int today = d.get(Calendar.DAY_OF_MONTH);
int month = d.get(Calendar.MONTH);
/**
* 将d设置为当前月份的第一天
* 并获取这一天是一周中的第几天,一周的第一天
*/
d.set(Calendar.DAY_OF_MONTH, 1);
int weekDay = d.get(Calendar.DAY_OF_WEEK);
int firstDayOfWeek = d.getFirstDayOfWeek(); int intent = 0;
while (weekDay != firstDayOfWeek) {
intent++;
//日子减一,一直减到当日是一周的第一天,得到缩进
d.add(Calendar.DAY_OF_MONTH, -1);
weekDay = d.get(Calendar.DAY_OF_WEEK);
}
/**
* 获取表头——日期缩写
*/
String[] weekdays = new DateFormatSymbols().getShortWeekdays(); do {
System.out.printf("%4s", weekdays[weekDay]);
d.add(Calendar.DAY_OF_MONTH, 1);
weekDay = d.get(Calendar.DAY_OF_WEEK);
} while (weekDay != firstDayOfWeek);
System.out.println();
/**
* 打印1号之前的空白
*/
for (int i = 1; i < intent; i++) {
System.out.print(" ");
}
d.set(Calendar.DAY_OF_MONTH, 1); /**
* 只要不出当月,则继续打印
*/
do {
int day = d.get(Calendar.DAY_OF_MONTH);
System.out.printf("%3d", day);
if (day == today) {
System.out.print("* ");
} else {
System.out.print(" ");
}
/**
* 日期增加1天后,如果是周一,则进行换行
*/
d.add(Calendar.DAY_OF_MONTH, 1);
weekDay = d.get(Calendar.DAY_OF_WEEK);
if (weekDay == firstDayOfWeek) {
System.out.println();
}
} while (d.get(Calendar.MONTH) == month);
if (weekDay != firstDayOfWeek) {
System.out.println();
}
}
}
用java打印日历的更多相关文章
- 使用java 打印日历
package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...
- java打印日历
打个日历,写了半天,感情水平真菜, 不过主要是不会数组,明天一定要把数组看了 package demo; import java.util.Scanner; public class Demo { / ...
- Python学习实践-----打印日历
使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- 关于这两天研究Java打印pdf方法的记录
这两天在研究Java调用打印机打印PDF文件的方法,学到了不少东西,特别来记录一下. 关于Java打印网上最多的而且也是Java正统的打印方法就是使用PrintService,一套比較标准的打印代码例 ...
- java打印正金字塔,倒金字塔和“水影”金字塔
java打印正金字塔,倒金字塔和"水影"金字塔 --------原创文章,若要转载,请注明出处 小小少年 闲来无事,想起自己初学java的时候做的经典的无非就是打印出一些有意思 ...
- Java打印
Java打印 import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Gra ...
- Oracle打印日历功能
Oracle用SQL打印日历 1.1 打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D, ...
- Java 打印程序设计实例
3.1 打印文本 3.1.1 应用场景 假设我们需要打印一个窗体的某个文本编辑域(可能只有几行,也可能包含多页)的内容,并且每页最多打印 54 行,如何实现呢? 3.1.2 解决方法 基本思路如下:首 ...
随机推荐
- dot net core 使用 usb
原文:dot net core 使用 usb 本文告诉大家如何在 dot net core 使用 usb 目录 获得通知 读写 串口通信 LGPL 首先需要打开 Nuget 安装 CoreCompat ...
- 《Facebook效应》
前两年风靡了一阵子的电影<社交网络>毕竟是电影,一种艺术的方式的表达.虽然无法完全的印证<Facebook 效应>一书中记载的正确性,但其细节足以给人启示. 电影中,主人公炫酷 ...
- 至Linux-2.6.32编译内核ipset-6.23坎坷的经历
新的版本号ipset 上周,一名医生在儿童医院等待一段差距叫做数量.接受NetfilterPush信息的邮件列表,列表ipset最新6.23版本号的新功能,非常喜欢我现在需要的是,特别是timeout ...
- C++ Lambda表达式基本用法(言简意赅,非常清楚)
创建一个匿名函数并执行.Objective-C采用的是上尖号^,而C++ 11采用的是配对的方括号[].实例如下: 1 2 3 4 5 6 7 8 9 #include <iostream> ...
- go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]
go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2].想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][ ...
- 一种基于HBase韵海量图片存储技术
针对海量图片存储,已有若干个基于Hadoop的方案被设计出来.这些方案在系统层小文件合并.全局名字空间以及通用性方面存在不足.本文基于HBase提出了一种海量图片存储技术,成功解决了上述问题.本文将介 ...
- ios-利用键盘通知处理键盘出现时遮挡控件问题
-(void)viewDidLoad { NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //注册键盘显示通知 ...
- React学习(2)——action,reducer
action creator 是一个函数,格式如下: var actionCreator = function() { // 构建一个 action 并返回它 return { type: 'AN_A ...
- .net reactor 学习系列(一)---.net reactor介绍
原文:.net reactor 学习系列(一)---.net reactor介绍 学习.net已经一年多了,从语言的编写到框架类库的运用再到.net三大解决方案的了解(WF,WCF,WPF ...
- WPF无边框实现拖动效果
这是在做弹幕的时候遇到的一个需求 透明背景,拖动弹幕=.= private void Window_MouseLeftButtonDown(object sender, MouseButtonEven ...