疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java基础Calendar类的简单使用


 

 Java基础Calendar类的简单使用

 
package com.lesson11.example;
 
import java.util.Calendar;
import java.util.Date;
 
/*
*简单了解Calendar类,操作时间日期
* */
 
public class CalendarExample {
public static void main(String args[]){
/*
* Calendar类是抽象类,且Calendar类的构造方法是protected的,所以
* 无法使用Calendar类的构造方法来创建对象,则需要getInstance方法用来创建对象。
* ---------------------------------------------------------
* 方法:public static Calendar getInstance()
* 功能:创建 Calendar对象
* 返回值:Calendar
* 注意:getInstance是静态方法,所以可以直接使用类名调用
* */
//创建Calendar对象
Calendar today = Calendar.getInstance();
//System.out.println(today);
//输出时间的具体信息:java.util.GregorianCalendar[time=1430445161507,
//areFieldsSet=true,…… YEAR=2015,MONTH=4,WEEK_OF_YEAR=18, ……]
/*
* 方法:public final void setTime(Date date)
* 功能:根据给定的时间设置Calendar对象
* 参数:Date
* 返回值:void
* */
//根据给定时间设置Calendar对象
Date date = new Date(2001-1900,2,13);//不建议使用Date的该带参构造方法
today.setTime(date);//设置指定时间
//System.out.println(today);//……time=984412800000……YEAR=2001……
//初始化Calendar对象(一般用于重置时间时)
today.setTime(new Date());
//System.out.println(today);//……YEAR=2015,MONTH=4,WEEK_OF_YEAR=18……
/*
 
* 除了使用Date类型,也可以直接使用Calendar中的set方法设置指定时间
* -----------------------------------------------------
* 方法:public final void set(int year,int month,int date,
* int hourOfDay,int minute)
* 功能:设置Calendar对象的年月日时分
* 返回值:void
* ------------------------------------------------------
* 方法:public final void set(int year,int month,int date)
* 功能:设置Calendar对象的年月日
* 返回值:void
* -------------------------------------------------------
* 方法:public void set(int field,int value)
* 功能:设置时间中指定的某个字段
* 参数:int field 指定的字段
* int value 指定字段值
* 返回:void
* ------------------------------------------------------
* 参数field代表要设置的字段的类型,常见类型如下:
* Calendar.YEAR——年份
* Calendar.MONTH——月份(月份从0开始, 实际月份显示要加1)
* Calendar.DATE——日期
* Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同
* Calendar.HOUR——12小时制的小时数
* Calendar.HOUR_OF_DAY——24小时制的小时数
* Calendar.MINUTE——分钟
* Calendar.SECOND——秒
* Calendar.DAY_OF_WEEK——星期(周日是1,周一是2,周二是3……)
* */
today.set(Calendar.YEAR, 2009);
today.set(Calendar.MONTH, 10);
//System.out.println(today);
//输出:……YEAR=2009,MONTH=10……
today.setTime(new Date());
/*
* 方法:public int get(int field)
* 功能:获取指定字段的值
* 参数:int field 指定字段
* 返回:int 获取的字段值
* */
int year = today.get(Calendar.YEAR);//显示年份
int month = today.get(Calendar.MONTH) + 1;//显示月份
int day = today.get(Calendar.DATE);//显示日期
System.out.println("具体日期是"+year+"-"+month+"-"+day);//具体日期是2015-5-1
//本月第N天,和Calendar.DATE一样
int day_of_month = today.get(Calendar.DAY_OF_MONTH);
System.out.println(day_of_month);//1
//今年第N天
int day_of_year = today.get(Calendar.DAY_OF_YEAR);
System.out.println(day_of_year);//121
//获取星期
int day_of_week = today.get(Calendar.DAY_OF_WEEK);
System.out.println(day_of_week);//6,实际为星期五
/*
* 方法:public abstract void add(int field,int amount)
* 功能:在Calendar对象中的某个字段上增加或减少一定的数值
* 参数:int field 需要修改的字段值
* int amount 添加或减少的数值
* */
//5分钟以前
today.add(Calendar.MINUTE,-5);
int min5 = today.get(Calendar.MINUTE);
System.out.println(min5);
//计算当前时间30天以后的日期
today.add(Calendar.DATE,30);
//在日期字段上修改,类内部会重新计算该日期对象中其它各字段的值
int y = today.get(Calendar.YEAR);
int m = today.get(Calendar.MONTH)+1;
int d = today.get(Calendar.DATE);
System.out.println(y+"-"+m+"-"+d);
/*
* 方法:public boolean after(Object when)
* 功能:判断当前日期对象是否在when对象的后面
* 参数:Object when 指定的日期
* 返回值:boolean
* true 当前日期在指定日期之后
* false 当前日期在指定日期之前
* --------------------------------------
* 方法:public boolean before(Object when)
* 功能:判断当前日期对象是否在when对象之前
* 参数:Object when 指定的日期
* 返回值:boolean
* */
Calendar before = Calendar.getInstance();
before.set(2015,1,1);
System.out.println(today.after(before));//true
System.out.println(today.before(before));//false
/*
* 方法:public int compareTo(Calendar anotherCalendar)
* 功能:比较两个Calendar对象(可用于比较时间)
* 参数:Calendar anotherCalendar
* 返回值:int
* 0 Calendar == anotherCalendar
* -1 Calendar < anotherCalendar
* 1 Calendar > anotherCalendar
* */
//今天和之前相比
System.out.println(today.compareTo(before));//1
//今天和今天相比
System.out.println(today.compareTo(today));//0
/*
* Calendar对象和相对时间之间的转化:Calendar <--> long
* --------------------------------------------
* 方法:public long getTimeInMillis()
* 功能:将Calendar对象转化成long型
* 参数:无
* 返回值:long
* --------------------------------------------
* 方法:public void setTimeInMillis(long millis)
* 功能:将long型转化成Calendar对象
* 参数:long millis 毫秒数
* 返回值:void
* */
//计算today和before两个日期之间相差的天数
//将Calendar对象转化成相对时间
long todayMillis = today.getTimeInMillis();
long beforeMillis = before.getTimeInMillis();
long days = (todayMillis - beforeMillis)/(24 * 60 * 60 * 1000);
System.out.println(days);
}
}