Calendar是一个抽象类,主要用来操作日历时间字段。在Java.util.Calendar包中,Calendar在开发中基本都会使用得到,这里对经常使用到的做个总结
常用的方法
abstract void add(int field, int amount) |
此方法添加或减去指定的时间量,以给定日历字段,基于日历的规则。 |
boolean after(Object obj) |
这个方法返回当前日历是否代表在指定Object表示的时间之后的时间。 |
boolean before(Object when) |
这个方法返回当前日历是否代表在指定Object表示的时间之前的时间。 |
void clear() |
此方法设置此Calendar的所有日历字段值和时间值(毫秒从历元至偏移量)未定义。 |
Object clone()
扫描二维码关注公众号,回复:
58957 查看本文章
|
此方法创建并返回此对象的一个副本。 |
int compareTo(Calendar anotherCalendar) |
这个方法比较两个Calendar对象表示的时间值(从历元至毫秒偏移量)。 |
boolean equals(Object obj) |
这个方法使日历比较指定的对象。 |
int get(int field) |
此方法返回给定日历字段的值。 |
int getActualMaximum(int field) |
此方法返回指定日历字段可能拥有的最大值,鉴于此Calendar时间值。 |
int getActualMinimum(int field) |
此方法返回指定日历字段可能拥有的最小值,鉴于此Calendar时间值。 |
static Calendar getInstance() |
使用默认时区和语言环境这种方法获得一个日历。 |
static Calendar getInstance(Locale aLocale) |
使用默认时区和指定的区域设置此方法获取一个日历。 |
static Calendar getInstance(TimeZone zone) |
使用指定的时区和默认语言环境这种方法得到一个日历。 |
static Calendar getInstance(TimeZone zone, Locale aLocale) |
这种方法得到一个日历指定的时区和语言环境。 |
abstract int getMaximum(int field) |
此方法返回此Calendar实例给定日历字段的最大值。 |
abstract int getMinimum(int field) |
此方法返回此Calendar实例给定日历字段的最小值。 |
Date getTime() |
此方法返回表示此Calendar的时间值(从历元至“毫秒偏移量)的Date对象。 |
long getTimeInMillis() |
该方法以毫秒为单位返回此Calendar的时间值。 |
abstract void roll(int field, boolean up) |
此方法添加或减去(上/下)的时候一个单元在给定的时间字段不更改更大的字段。 |
void roll(int field, int amount) |
此方法将指定的(签署)金额至指定日历字段不更改更大的字段。 |
void set(int field, int value) |
此方法设置给定日历字段为给定值。 |
void set(int year, int month, int date) |
此方法设置为日历字段的值 YEAR, MONTH, and DAY_OF_MONTH.. |
void set(int year, int month, int date, int hourOfDay, int minute) |
此方法设置为日历字段的值YEAR, MONTH, DAY_OF_MONTH, HOUR_OF_DAY, 和 MINUTE. |
void set(int year, int month, int date, int hourOfDay, int minute, int second) |
此方法设置的字段的值YEAR, MONTH, DAY_OF_MONTH, HOUR, MINUTE, 和SECOND. |
package com.gin.xjh.newcalendar; import android.util.Log; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Name: CalendarUtils * Author: xieganag * Email: * Date: 2018-04-23 15:25 */ public class CalendarUtils { /** * 得到几天后的日期 * number 正数是以后 负数 标示以前 0 表明今天 */ public static void getOntherDay(int number) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + number); Log.d("日期是", calendar.get(Calendar.DAY_OF_MONTH) + ""); } /*计算某一个月的天数是多少*/ public static void maxDay(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1);//默认1月为0月 int day = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 计算两个任意时间中间相隔的天数 */ public static int getDaysBetween(Calendar day1, Calendar day2) { if (day1.after(day2)) { Calendar swap = day1; day1 = day2; day2 = swap; } int days = day2.get(Calendar.DAY_OF_YEAR) - day1.get(Calendar.DAY_OF_YEAR); int y2 = day2.get(Calendar.YEAR); if (day1.get(Calendar.YEAR) != y2) { day1 = (Calendar) day1.clone(); do { days += day1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数 day1.add(Calendar.YEAR, 1); } while (day1.get(Calendar.YEAR) != y2); } return days; } /** * roll()方法和add()方法用法一样,不过roll()方法是在本月循环,比如,七月三十一号加五天,add()方法结果是八月五号; * roll()方法是七月五号,roll()方法用到的少,一般add()使用较多。测试roll()方法: */ public void roll(int year, int month, int day, int num) { Calendar calendar = Calendar.getInstance(); calendar.clear(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1); calendar.set(Calendar.DAY_OF_MONTH, day); Date date = calendar.getTime(); calendar.roll(Calendar.DATE, num); date = calendar.getTime(); System.out.println(df.format(date)); } }
对了 假如需要转换的得到确切时间的 可以使用下面的 需要具体到什么时间段 自行修改
final static String simpleDateString = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat simpleDateFormat = new SimpleDateFormat(simpleDateString); simpleDateFormat.format(calendar.getTime())