GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
注意:
月份:一月是0,二月是1,以此类推,12月是11.(January 一月;February 二月;March三月;April 四月;May五月;June 六月;July 七月;August 八月;September 九月;October 十月;November 十一月;December 十二月)。
星期:周日是1,周一是2,。。。。周六是7 (sunday 周日;Monday 周一;Tuesday 周二;Wednesday 周三;Thursday 周四;Friday 周五;saturday 周六)。
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TestCalendar {
public static void main(String[] args) {
Calendar c = new GregorianCalendar();
// c.set(2016, 9, 13, 19, 42, 34); // 设置时间,年月日,时分秒,9代表十月
// 等价于c.set(2016, Calendar.OCTOBER, 13, 19, 42, 34);
c.set(Calendar.YEAR, 2016);
c.set(Calendar.MONTH, 1);
c.set(Calendar.DATE, 10);
// 如果不设置时刻,就返回当前的时刻。
Date d = c.getTime(); // 返回时间
System.out.println(d);
System.out.println(c.get(Calendar.YEAR));// 返回当前年,月、日类似。
// 测试日期计算
c.add(Calendar.YEAR, 3); // 日期的年份加3。
c.add(Calendar.MONTH, 1); // 月份加1。
c.add(Calendar.DATE, -5); // 天数减5.
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.get(Calendar.DATE));
}
}
写一个日历小程序,正确显示:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/**
* 可视化日历程序
*/
public class VisualCalendar {
public static void main(String[] args) {
// String temp = "2016-9-14";
Scanner sc = new Scanner(System.in);
System.out.println("请输入格式为2016-10-13的日期");
String temp = sc.nextLine();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try { // 捕获异常
Date date = format.parse(temp);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int y = calendar.get(Calendar.DATE); // 当天几号
System.out.println(y);
System.out.println(date);
calendar.set(Calendar.DATE, 1); // 设置天数为当月的第一天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 输出当月第一天为星期几
System.out.println(calendar.getActualMaximum(Calendar.DATE)); // 输出当月共有多少天
int x = calendar.getActualMaximum(Calendar.DATE); // 当月共有多少天
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 1; i <= calendar.get(Calendar.DAY_OF_WEEK) - 1; i++) { // 在当月第一天之前有几个空白
System.out.print("\t");
}
int j = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 从星期几开始输出天数
for (int i = 1; i <= x; i++) {
if (i == y) {
System.out.print("$" + i + "\t"); // 当前日期的前面显示$符号
} else {
System.out.print(i + "\t");
}
j++;
if (j % 7 == 0) { // 每隔七天会换行
System.out.println();
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}