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用法