Calendar日历类
Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年、月、日、时、分、秒的展示和计算。
GregorianCalendar
是 Calendar
的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
雷区
注意月份的表示,一月是0,二月是1,以此类推,12月是11。
因为大多数人习惯于使用单词而不是使用数字来表示月份,这样程序也许更易读,父类Calendar使用常量来表示月份:JANUARY、FEBRUARY等等。
效果
代码
package cn.hanquan.test;
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 TestCalendar
{
public static void main(String[] args) throws ParseException
{
// 读取字符串
System.out.println("请输入年月日:");
Scanner input = new Scanner(System.in);
// 将字符串格式化为date
String str = input.nextLine();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str);
// 将date转化为calendar
Calendar c = new GregorianCalendar();
c.setTime(date);
// 打印日期
int weekOfMonth = c.get(Calendar.DAY_OF_MONTH);
int maxDateOfMonth = c.getActualMaximum(Calendar.DATE);// 日期在当月里的最大值
System.out.println("本月几号:DAY_OF_MONTH:" + c.get(Calendar.DAY_OF_MONTH));
System.out.println("本月多少天:" + maxDateOfMonth);
// 从1号开始 用于遍历
c.set(Calendar.DAY_OF_MONTH, 1);
int weekday = c.get(Calendar.DAY_OF_WEEK);
System.out.println("本月1号星期几:DAY_OF_WEEK:" + (weekday - 1));
int huanhang = -1;
// 空出上个月末尾
System.out.println("一\t二\t三\t四\t五\t六\t日");
for (int j = 0; j < weekday - 2; j++)
{
huanhang++;
System.out.print("\t");
}
// 从本月1日开始打印
for (int i = 1; i <= maxDateOfMonth; i++)
{
huanhang++;
int t = (i - 1 + c.get(Calendar.DAY_OF_MONTH));
System.out.print(t);
if (t == weekOfMonth)
System.out.print("*");
System.out.print("\t");
// 打印换行
if (huanhang % 7 == 6)
{
System.out.print("\n");
}
}
}
}