Java复习笔记14【Calendar类的简单使用】

来源:互联网 发布:java Renameto什么意思 编辑:程序博客网 时间:2024/05/02 04:16
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);
 }
}

0 0
原创粉丝点击