Java Calendar用法

本文详细介绍了Java中Calendar类的使用方法,包括初始化、设置和获取时间、日期格式化等核心功能,以及一些需要注意的细节,如月份和星期的计数方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Calendar初始化

Calendar calendar = Calendar.getInstance();

默认返回GregorianCalendar实例,在GregorianCalendar的构造函数中,设置为当前时间

public GregorianCalendar(TimeZone zone, Locale aLocale) {
    super(zone, aLocale);
    gdate = (BaseCalendar.Date) gcal.newCalendarDate(zone);
    setTimeInMillis(System.currentTimeMillis());
}

2. 设置时间

Calendar可以通过Date对象或者时间戳来设置时间。

setTime(Date date) // Date对象
setTimeInMillis(long millis) // 毫秒

Calendar也可以通过设置年/月/日/小时/分钟/秒来设置时间。

set(int year, int month, int date)
set(int year, int month, int date, int hourOfDay, int minute)
set(int year, int month, int date, int hourOfDay, int minute, int second)

Calendar还可以通过设置特定领域来设置时间。

set(int field, int value)

常用的field

字段含义
YEAR
MONTH
DATE
HOUR_OF_DAY小时
MINUTE分钟
SECOND

set(int, int)方法采取延缓计算的方法

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, Calendar.APRIL); // 设置为4月
calendar.set(Calendar.DATE, 31); // 4月31日,如果没有下面的设置,会自动转换成5月1日
calendar.set(Calendar.MONTH, Calendar.JULY); // 7月31日

3. 获取时间

Calendar可以获取Date对象和时间戳。

getTime() // Date对象
getTimeInMillis() // 毫秒

Calendar也可以通过特定领域来获取时间。

get(int field)

除了上面的常用field,还有

字段含义
HOUR小时(12进制)
DAY_OF_YEAR今年第几天
DAY_OF_WEEK星期几
WEEK_OF_MONTH这个月第几周
WEEK_OF_YEAR今年第几周

4. 其他方法

getActualXXX(int)方法返回当前时间的最大或最小值,而getXXX(int)方法则返回所有数据的最大或最小值。

getActualMaximum(int field)
getActualMinimum(int field)
getMaximum(int field)
getMinimum(int field)

例如在4月份返回最大天数,getActualMaximum(int)返回30,而getMaximum(int)返回31。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, Calendar.APRIL);
System.out.println(calendar.getMaximum(Calendar.DATE)); // 31
System.out.println(calendar.getActualMaximum(Calendar.DATE)); // 30

add(int, int)方法增加某个领域的值, 负值为减少

add(int field, int amount)

如果是3月31日,增加到4月份,会自动修改日期。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, Calendar.MARCH);
calendar.set(Calendar.DATE, 31); // 2018-03-31
calendar.add(Calendar.MONTH, 1); // 2018-04-30
calendar.add(Calendar.MONTH, 12); // 2019-04-30

5. 注意点

Calendar中星期是从周日开始计算的

public final static int SUNDAY = 1;
public final static int MONDAY = 2;
public final static int TUESDAY = 3;
public final static int WEDNESDAY = 4;
public final static int THURSDAY = 5;
public final static int FRIDAY = 6;
public final static int SATURDAY = 7;

Calendar中月份是从0开始的。

public final static int JANUARY = 0;
public final static int FEBRUARY = 1;
public final static int MARCH = 2;
public final static int APRIL = 3;
public final static int MAY = 4;
public final static int JUNE = 5;
public final static int JULY = 6;
public final static int AUGUST = 7;
public final static int SEPTEMBER = 8;
public final static int OCTOBER = 9;
public final static int NOVEMBER = 10;
public final static int DECEMBER = 11;

6. 日期格式化

Calendar calendar = Calendar.getInstance();
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(calendar.getTime())

参考资料:http://blog.youkuaiyun.com/zerogotosum/article/details/1671314
参考资料:http://outofmemory.cn/code-snippet/979/Java-Calendar-Date-usage-summary

相关文章
Java Calendar用法
Java SimpleDateFormat用法
Java Formatter用法
Java Pattern和Matcher用法
Java DecimalFormat用法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值