1.Date类
Date类概述
* Date类是一个日期类
* 通过该类可以获得时间和日期信息。
Date类构造方法
* Date() 获得当前的系统时间对象。
* Date(long time) 根据指定的毫秒值创建日期对象
Date类的成员方法
* long getTime(); 获得当前时间对象的毫秒值
示例代码
public class DateDemo01 {
public static void main(String[] args){
// 创建日期对象
Date d = new Date();
// Sun Jun 03 10:19:03 CST 2018
// 2018-06-03 10:19:03 ==> DateFormat
// 2018/06/03 10:19:03
System.out.println(d);
// 获得当前时间的毫秒值: 1527992568696
System.out.println(d.getTime());
// 根据毫秒值创建日期对象
Date date = new Date(1527992568696L);
// Thu Jan 01 08:00:01 CST 1970
System.out.println(date);
}
}
2.DateFormat类
DateFormat类概述
* 是一个日期格式化类,是一个抽象类,不能直接创建该类对象,只能创建子类对象。
DateFormat类常用子类
* SimpleDateFormat
SimpleDateFormat类常见操作
* 将日期对象格式为字符串
* 将字符串格式化为日期对象
SimpleDateFormat类构造方法
* SimpleDateFormat() 创建日期格式化对象,使用默认的日期模式。
* SimpleDateFormat(String pattern) 根据指定的日期模式创建日期格式化对象。
SimpleDateFormat类成员方法
* String format(Date d) 将日期对象转换为字符串
* Date parse(String str); 将字符串转换为日期对象
* void applyPattern(String pattern) 修改日期模式
日期模式
* yyyy 年
* MM 月
* dd 日
* HH 时 hh:12小时制 HH:24小时制
* mm 分
* ss 秒
* EE 周
示例代码
/*
日期对象转字符串的步骤
* 创建SimpleDateFormat日期格式化对象并指定日期模式
* 调用格式化对象的format方法传递日期对象获得字符串。
*/
public class DateFormatDemo01 {
public static void main(String[] args){
// 获得当前系统日期对象
Date d = new Date();
// 创建日期格式化对象
// 2018/06/03 10:19:03
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 2018-06-03
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 2018年06月03日 10时20分30秒
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
// 创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat();
// 修改日期模式
sdf.applyPattern("yyyy-MM-dd");
// Date ==> String
// 2018/6/3 上午10:47
String dStr = sdf.format(d);
System.out.println(dStr);
// 再次修改日期模式
sdf.applyPattern("HH:mm:ss");
System.out.println(sdf.format(d));
}
}
字符串转日期对象
/**
字符串转换为日期对象的步骤
* 创建日期格式化对象并指定日期模式
* 调用日期格式化对象的parse方法传递日期对象获得字符串。
字符串转换为日期对象注意事项
* 创建日期格式对象时指定的日期模式要和字符串的日期格式一致。
*/
public class DateFormatDemo02 {
public static void main(String[] args) throws ParseException {
// 日期字符串
String dateStr = "2018-06-10 10:20:30";
// 创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String ==> Date 获得对应时间的Date类
Date date = sdf.parse(dateStr);
System.out.println(date);
}
}
3.Calendar类
- 常用方法
Calendar类概述
* 是一个日历类,也是一个抽象类,不能直接创建该类对象,只能创建子类对象。
* 通过该类也可以获得时间和日期信息
如何获得日历对象
* 通过调用Calendar类的静态方法获得,静态方法如下:
* static Calendar getInstance()
Calenar类的成员方法
* int get(int field); 根据指定的日历字段获得对应的值
* void set(int field,int value);
* 修改指定日历字段的值为指定值
* void add(int field,int value);
* 将指定日历字段的值在当前值的基础上偏移一个值,正数向后偏移,负数向前偏移
* Date getTime(); 获得日期对象
* long getTimeInMillis() 获得当前时间毫秒值
* void set(int year,int month,int date) 修改年月日
示例代码
public class CalendarDemo01 {
public static void main(String[] args){
// 获得日历对象
Calendar c = Calendar.getInstance(); // c = new GregorianCalendar();
// c ==> java.util.GregorianCalendar
System.out.println(c);
// 获得毫秒值
System.out.println(c.getTime().getTime());
System.out.println(c.getTimeInMillis());
// set:修改指定日历字段的值
c.set(Calendar.YEAR,2020);
c.set(Calendar.MONTH,12);
c.set(Calendar.DATE,32);
// 修改年月日
c.set(2000,2,20);
// add:将指定日历字段的值在当前值的基础上偏移一个值,正数向后偏移,负数向前偏移
c.add(Calendar.YEAR,-1);
// 获得年
System.out.println(c.get(Calendar.YEAR)); // 2018
// 获得月
System.out.println(c.get(Calendar.MONTH)+1); // 6
// 获得日
System.out.println(c.get(Calendar.DATE)); //
// 获得时
System.out.println(c.get(Calendar.HOUR)); // 11
// 获得分
System.out.println(c.get(Calendar.MINUTE)); // 31
// 获得秒
System.out.println(c.get(Calendar.SECOND)); // 49
}
}
2.4 例子
请使用日期时间相关的API,计算出一个人已经出生了多少天。
// 需求:请使用日期时间相关的API,计算出一个人已经出生了多少天。
// 生日: 1998-12-30
String str = "1998-12-30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dt = sdf.parse(str);
long birthdatTime = dt.getTime(); // 时间毫秒值
// 获取此刻时间毫秒值
long currentTime = new Date().getTime();
// 走过的总的时间毫秒值
long rs = currentTime - birthdatTime;
// 换算成天
double alldays = rs * 1.0 / (24 * 60 * 60 * 1000) ;
System.out.println(alldays);