一、Calendar介绍
Calendar 类是一个抽象类(在这里和DataFormat一样,也是抽象类),它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。Calendar英文含义为日历、挂历、日程表。
首先它是一个抽象类
从源码也可以看出,Calendar是一个抽象类,并且实现了Serializable,Cloneable等接口
用特定的日历算法对时间进行出来,可以获取到年、月、小时、天、周等等
可以确定一周中的第几天,还可以确定一年中的第几周,一年中的第几天等等,下面举一个具体使用
Calendar类对象字段类型
Calendar类中用以下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Calendar类对象信息的设置
Set设置
Calendar c1 = Calendar.getInstance();
调用:
public final void set(int year,int month,int date)
c1.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
Calendar类对象信息的获得
Calendar c1 = Calendar.getInstance();
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);
使用 SimpleDateFormat 格式化日期
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:
import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String args[]) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
二、代码测试
public class Test {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//这个月的第几天,也就是第几号
int day = calendar.get(Calendar.DATE);
//获取当前日期的月份
int month = calendar.get(Calendar.MONTH)+1;
//获取当前日期的年份
int year = calendar.get(Calendar.YEAR);
//获取当前时间是一年中的第几周
int week_of_year = calendar.get(Calendar.WEEK_OF_YEAR);
//当月的第几号
int day_of_month = calendar.get(Calendar.DAY_OF_MONTH);
//一年中的第几天
int day_of_year = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(year+"-"+month+"-"+day);
System.out.println("一年中第几周:"+week_of_year);
System.out.println("当月的第几号:"+day_of_month);
System.out.println("一年中的第几天:"+day_of_year);
}
}
输出结果:
这个日历类对获取时间、时间处理还是很方便的,当然还有很多其他的用法,如自定义set()方法,还有对时间上下午的处理