Calendar类
相关简介都在代码中
package day03;
import java.util.Calendar;
import java.util.Date;
/**
* java.util.Calendar
* 日历类
* 该类是一个抽象类,封装了对时间的相关操作
* 常用的实现类是格里高利历(阳历)
* 使用 日历类是为了对时间进行相关的操作
* 比如计算时间
* @author
*
*/
public class CalendarDemo1 {
public static void main(String[] args) {
/**
* 使用Calendar的静态方法创建实例
* 该方法会根据当前系统所在地区创建一个
* 相应的实现,通常是GregorianCalendar
* 默认的日历实例表示当前系统时间
*/
Calendar calendar = Calendar.getInstance();
/**
* toString不能直观反应表示的日期
*/
System.out.println(calendar);
/**
* Calendar与Date之间的转换
*
*
* Calendar-> Date
* Date getTime()
* Calendar提供了方法getTime()
* 返回一个Date对象,该对象表示的时间就是
* 当前Calendar表示的时间
*
*/
Date date = calendar.getTime();
System.out.println(date);
//表示明天这一时刻
date.setTime(date.getTime()+1000*60*60*24);
System.out.println(date);
/**
* Date -> Calendar
* void setTime(Date date)
* Calendar的setTime方法可以时当前
* Calendar表示给定的Date所表示的Date所表示的时间
*
*/
//Calendar也表示明天这一刻了
calendar.setTime(date);
System.out.println(calendar);
}
}
package day03;
import java.util.Calendar;
/**
* Calendar提供了针对不同时间分量单独设置
* 值的方法
* void set(int field,int value)
* 其中第一个参数为:时间分量,例如:年,月,日等等
* 第二个参数为对应的值
* 时间分量是一个int值,使用Calendar提供的常量
* @author
*
*/
public class CalendarDemo2 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
/**
* 设置Calendar,使其表示
* 2008-08-08 20:08:08
*/
//设定年
calendar.set(Calendar.YEAR, 2008);
System.out.println(calendar.getTime());
/**
* 设置月
* 月从0开始,0表示1月
* 或者可以使用具体月的常量
*/
//calendar.set(Calendar.MONTH, Calendar.AUGUST);
calendar.set(Calendar.MONTH, 7);
System.out.println(calendar.getTime());
/**
* 设置日
* 对应时间分量常用的:
* DATE:月中天
* DAY_OF_MONTH:月中的天,与DATE一致
* DAY_OF_WEEK:周中的天,星期几
* DAY_OF_YEAR:年中的天
*/
calendar.set(Calendar.DAY_OF_MONTH, 8);
System.out.println(calendar.getTime());
//设置时分秒
calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 8);
calendar.set(Calendar.SECOND, 8);
System.out.println(calendar.getTime());
}
}
package day03;
import java.util.Calendar;
/**
* 获取一个Calender表示的日期中
* 各个时间分量对应的值
* @author
*
*/
public class CalendarDemo3 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
/**
* int get(int field)
* 获取对应时间分量的值
*/
//获取年
int year = calendar.get(Calendar.YEAR);
//获取月
int month = calendar.get(calendar.MONTH)+1;
//获取日
int day = calendar.get(calendar.DATE);
System.out.println(year+"-"+month+"-"+day);
//获取时分秒也是一样的方法
//查看星期几?
int dow = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println("周"+(dow==1?7:dow-1));
String[] data= {"日","一","二","三","四","五","六"};
System.out.println("周"+data[dow-1]);
//到今天为止,今年已经过了多少天
int doy = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(year+"年已经过了"+doy+"天");
}
}
package day03;
/**
* 获取一个时间分量所允许的最大值
* @author
*
*/
import java.util.Calendar;
public class CalendarDemo4{
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//当月总共多少天?
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(days);
//查看2016年2月多少天?
calendar.set(Calendar.YEAR, 1);
days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//今年总共多少天?
days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println("今年共"+days+"天");
}
}
package day03;
import java.util.Calendar;
/**
* Calendar中计算时间的方法
* void add(int field,int value)
* 对指定的时间分量加上给定的值,若给定的值是负数
* 则减去给定的值
* @author
*
*/
public class CalendarDemo5 {
public static void main(String[] args) {
/**
* 查看三年两个月零一天后的日期
*/
Calendar calendar = Calendar.getInstance();
//查看3年后
calendar.add(Calendar.YEAR, 3);
System.out.println(calendar.getTime());
//再查看2个月后
calendar.add(Calendar.MONTH, 2);
System.out.println(calendar.getTime());
//再查看8天以后
calendar.add(Calendar.DAY_OF_YEAR, 8);
System.out.println(calendar.getTime());
//再查看5小时以前
calendar.add(Calendar.HOUR_OF_DAY, -5);
System.out.println(calendar.getTime());
/**
* 遇到类似开发需求:
* 要求用户输入一个日期,然后对该日期进行一系列
* 的运算,再将计算后的日期显示给用户时。
* 流程如下:
* 1.获取用户输入的日期字符串
* 2.使用SimpleDateFormat将其转换为Date
* 3.创建一个Calendar,使其表示Date表示的日期
* 4.使用Calendar根据需求计算时间
* 5.将Calendar转换为一个Date
* 6.使用SimpleDateFormat将Date转换为字符串后显示给用户
*/
}
}