Java Calendar用法

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())

源码下载: https://github.com/nai-chen/JavaBlog

参考资料:http://blog.csdn.net/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用法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页
评论

打赏作者

假装你是大灰狼

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值