码字不易,请大家关注公众号,转发,点赞,只需动动手指,不要钱,谢谢了老铁!
1.1 Date及其常用API
1.1.1 Java中的时间
· Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点;
· 固定的时间点叫纪元(epoch),是UTC时间1970年1月1日 00:00:00;
· UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。
1.1.2 Date类简介
· java.util.Date类封装日期及时间信息。
· Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。
Date date=new Date();
//系统当前的日期及时间信息
System.out.println(date);
//Sun Jan 06 11:52:55 CTS 2013
long time=date.getTime();
//1970年1月1日至今的毫秒数
1.1.3 setTime和getTime方法
/** 使用setTime和getTime设置及获取时间 */
public void testSetTime(){
Date date=new Date();
//输出当天此时此刻的日期和时间
System.out.println(date);
long time=date.getTime();
//增加一天所经历的毫秒数
time+=60*60*24*1000;
date.setTime(time);
//输出明天此时此刻的日期和时间
System.out.println(date);
}
setTime和getTime方法(续1)
/** 获取当前系统时间 */
public void testGetTime(){
Date date=new Date();
System.out.println(date);
//1970年1月1日零时距此刻的毫秒数
long time=date.getTime();
System.out.println(time);
}
1.1.4 Date重写toString方法
· Date重写了toString()方法,用一个字符串来描述当前Date对象所表示的时间。格式如下:
· Mon Feb 17 15:36:55 CST 2014
1.2 SimpleDateFormat
1.2.1 SimpleDateFormat简介
· java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化
· 构造方法
- SimpleDateFormat()
- SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat
· 方法
- final String format(Date date) Date=>String
- Date parse(String source) throws ParseException String=>Date
1.2.2 日期模式匹配字符
1.2.3 将Date格式化为String
/** 日期格式化 */
public void testFormat(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
String dateStr=sdf.format(date);
System.out.println(dateStr);
}
1.2.4 将String解析为Date
/**和format方法相反,parse方法用于按照特定格式将表示时间的字符串转换为Date对象*/
public void testParse() throws Exception{
String str="2013-12-25";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(str);
System.out.println(date);
}
1.3 Calendar简介
1.3.1 Calendar简介
· java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算;
· Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。
1.3.2 getInstance方法
· Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象
· Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化
Calendar c=Calendar.getInstance();
getInstance方法(续1)
/** 使用Calendar及子类获取时间 */
public void testGetInstance(){
Calendar c=Calendar.getInstance();
//输出Calendar对象所属的实际类型
System.out.println(c.getClass().getName());
//getTime方法返回对应的Date对象
System.out.println(c.getTime());
//创建GregorianCalendar对象
GregorianCalendar c1=new GregorianCalendar(2013,Calendar.DECEMBER,25);
System.out.println(c1.getTime());
}
1.3.3 设置日期及时间分量
/** 设置日期及分量 */
public void testSet(){
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2014);
c.set(Calendar.MONTH,Calendar.DECEMBER);
c.set(Calendar.DATE,25);
System.out.println(c.getTime());
//Thu Dec 25 16:02:08 CST 2014
c.set(Calendar.DATE,32);
System.out.println(c.getTime());
//Thu Jan 01 16:02:08 CST 2015
}
1.3.4 获取日期及时间分量
· 使用Calendar提供的get方法及一些常量可以获取日期及时间分量
· static int YEAR 提示年份的字段数字
· static int MONTH 指示月份的字段数字
· static int DATE 指示一个月份中的第几天
· static int DAY_OF_WEEK 指示一个星期中的某天,1为星期天
获取日期及时间分量(续1)
/** 获取时间及分量 */
public void testGet(){
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2014);
c.set(Calendar.MONTH,Calendar.DECEMBER);
c.set(Calendar.DATE,25);
int dayOfWeek=c.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
//输出为5,表示周四,周日为每周的第1天.
}
1.3.5 getActualMaximum方法
· int getActualMaximum(int field)给定此Calendar的时间值,返回指定日历字段可能拥有的最大值,例如:
int year=2014;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,year);
c.set(Calendar.DATE,1);
for(int month=Calendar.JANUARY;month<=Calendar.DECEMBER;month++){
c.set(Calendar.MONTH,month);
System.out.println(year+"年"+(month+1)+"月:"+c.getActualMaximum(Calendar.DATE)+"天");
}
1.3.6 add方法
· void add(int filed,int mount)为给定的时间分量的值加上给定的值,若给定的值为负数则是减去给定的值
/**输出一年后再减去3个月的日期*/
public void testAdd(){
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.YEAR,1);//加一年
calendar.add(Calendar.MONTH,-3);//减3个月
System.out.println("year:"+calendar.get(Calendar.YEAR));
System.out.println("month"+(calendar.get(Calendar.MONTH)+1));
System.out.println("day:"+calendar.get(Calendar.DAY_OF_MONTH));
}
1.3.7 setTime与getTime方法
· Date getTime()
使用Date描述Calendar表示的日期并返回
· void setTime(Date d)
使Calendar表示Date所描述的日期
/**通过Date对象设置日期,在获取日期*/
public void testsetTimeAndGetTime(){
Calendar calendar=Calendar.getInstance();
Date date=new Date();
calendar.setTime(date);
date=calendar.getTime();
}