Calendar用法的一些总结

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

此方法创建并返回此对象的一个副本。

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

你可能感兴趣的:(Android使用技巧)