一、Data类: java.util.Date
Date对象用于描述某个时间点,其封装了一个毫秒值(long值)。这个long值是从公元1970年元旦那一刻到当前Data描述的时间点之间的毫秒差。 因为Date的自身设计缺陷,我们仅仅用该类来描述日期,而不计算日期。
public class TestDate {
public static void main(String[] args){
Date date = new Date();//ctrl +shift+o,会自动导包和删除没有使用的包
System.out.println(date);
long now = date.getTime();
System.out.println(now);
date.setTime(now + 24*60*60*1000);
System.out.println(date);
}
}
二、SimpleDateFormat 类:java.text.SimpleDateForamt
该类可以很方便的在字符串和Data之间转换。
SimpleDateFormat 在构造的时候要指定日期格式字符串,这个字符串用于说明描述日期的字符串的具体格式。日期格式字符串中的特殊字符:
y:数字年,写几位就表示几位,一般四位或两位
Y:代表英文的年。
M:数字月,一般两位
d:数字日
D:代表年中的日
h:数字的小时,12小时制,hh
H:数字的小时,24小时制
m:数字的分
s:数字的秒
E:代表星期
a:代表上下午
format()方法,将Data按照指定格式转换成String。parse()方法,将String字符串转换成Data。
public class TestSimpleDateFormat {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
/**
* 将给定的date对象所表示的时间按照创建SimpleDateFormat时给定的日期格式转换为描述该对象的字符串。
*/
String nowStr = format1.format(now);
System.out.println(nowStr);//2013-09-17 03:45:04
SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd");
nowStr = format2.format(now);
System.out.println(nowStr);//2013/09/17
/**
* 将日期字符串转换为描述该日期的Date对象。
*/
String dateStr = "2013-6-21 12:59:33";
Date date = format1.parse(dateStr);//捕获异常,时分秒会默认为0
System.out.println(date);//Fri Jun 21 12:59:33 CST 2013
}
}
三、DateFormat类:
DateFormat类是SimpleDateFormat的父类,可以根据地区来转换日期对象对应的字符串。
public class TestDateFormat {
public static void main(String[] args){
Date now = new Date();
DateFormat format = DateFormat.getDateInstance(
DateFormat.LONG,//这个参数影响字符串的长度
Locale.CHINA//区域
);
String dateStr = format.format(now);
System.out.println(dateStr);
}
}
四、Calendar类:java.util.Calendar
calendar 经常被用于计算日期,该类的设计不存在千年虫问题。
public class TestCalendar {
public static void main(String[] args){
/**
* 使用工厂模式创建一个Calendar实例,该实例代表当前系统的时间。该方法会根据当前系统所在的地区和时间来创建实例。
*/
Calendar calendar = Calendar.getInstance();
/**
* 设置日期的方法set(),第一个参数对应Calendar中的常量月份的值可是是数字也可以是常量,数字0代表1月
*/
calendar.set(Calendar.YEAR, 2013);
calendar.set(Calendar.MONTH,Calendar.MAY);//calendar.set(Calendar.MONTH,4)
calendar.set(Calendar.DATE,15);
calendar.set(Calendar.HOUR,1);//这个和当前Calendar中存储的
/**
* 将calendar转成date,调用Calendar中的getTime()方法。
*/
Date date = calendar.getTime();
System.out.println(date);//Wed May 15 01:28:15 CST 2013
}
}