【Date及其常用API】
1、Java中的时间
Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表示一个特定的时间点;
固定的时间点叫纪元(epoch),是UTC时间1970年1月1日00:00:00;
UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。
2、Date类简介
java.util.Date类封装日期及时间信息。
Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。
Date date=new Date();//系统当前的日期及时间信息
System.out.println(date);//Sun Jan 06 11:52:55 CST 2013
long time = date.getTime();//1970年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);//输出明天此时此刻的日期和时间
}
/** 获取当前系统时间 */
public void testGetTime(){
Date date=new Date();
long time = date.getTime();
}
4、Date重写toString
Date重写了toString()方法,用一个字符串描述当前Date对象所表示的时间。格式如下:
Mon Feb 17 15:36:55 CST 2014
【SimpleDateFormat】
1、SimpleDateFormat简介
java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化。
构造方法
1)SimpleDateFormat()
2)SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
方法
1)final String format(Date date) Date=>String
2)Date parse(String source) throws ParseException String=>Date
2、日期模式匹配字符
字符的含义:
y:年
M:月
d:日
E:星期
a:AM或PM标识
H:小时(24小时制)
h:小时(12小时制)
m:分钟
s:秒
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);
}
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);
}
【Calendar】
1、Calendar简介
java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算;
Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。
2、getInstance方法
Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象;
Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化
Calendar c=Calendar.getInstance();
/**使用Calendar及子类获取时间*/
public void testGetInstance(){
Calendar c=Calendar.getInstance();
System.out.println(c.getClass().getName());//输出Calendar对象所属的实际类型
System.out.println(c.getTime());//getTime方法返回对应的Date对象
GregorianCalendar c1=new GregorianCalendar(2013,Calendar.DECEMER,25);
}
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());//The Jan 01 16:02:08 CST 2015
}
4、获取日期及时间分量
使用Calendar提供的get方法及一些常量可以获取日期及时间分量。
static int YEAR指示年份的字段数字。
static int MONTH指示月份的字段数字。
static int DATE指示一个月份中的第几天。
static int DAY_OF_WEEK指示一个星期中的某天,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天
}
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
c.set(Calendar.MONTH,month);
}
6、add方法
void add(int field,int mount)为给定的时间分量的值加上给定的值,若给定的值为负数则是减去给定的值。
/** 输出一年后再减去3个月的日期*/
public void testAdd(){
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.YEAR,1);//加一年
calendar.add(Calendar.MONTH,-3);//减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();
}
领取专属 10元无门槛券
私享最新 技术干货