10.11-Java中的时间与日期
Date类(java.util.Date)
该类的每一个实例用来描述时间(只能描述,不能操作)
其内部维护了一个long值。记录值自1970年1月1日到当前时间的毫秒差
例子
package day10_11;
import java.util.Date;
public class DateDemo {
/**
* Date类在设计上存在两个问题
* 1.时区
* 2.千年虫(计算机处理时间的BUG)
*/
public static void main(String[] args) {
/*
* 无参构造器 Date()
* 该构造器创建出的对象默认表示当前系统时间
*/
Date now = new Date();
System.out.println(now);
/*
* long getTime()
* 获取当前date对象描述的时间距离1970年1月1日的毫秒差
*/
long ms = now.getTime();
System.out.println(ms);
//计算明天这一刻的毫秒值
ms+=24*60*60*1000;
/*
* 有参构造器 Date(long time)
* 创建一个date对象来描述给定毫秒值所表示的时间
*/
Date td = new Date(ms);
System.out.println(td);
/*
* void setTime(long time)
* 使当前Date对象描述给定毫秒值所表示的时间
*/
now.setTime(ms);
System.out.println(now);
}
}SimpleDateFormat类
使用一个特殊的字符串来描述一个时间格式
并使用该时间格式作为桥梁再Date与String相互转换
Date<--SimpleDateFormat(桥梁类)-->String类
时间格式字符串中使用的特殊字符
y表示年份yy两位数年份yyyy四位数年份
M表示月MM表示两位数的月份
d表示日dd表示两位数的日期
h表示小时(12小时制)H表示小时(24小时制)hh/HH表示两位数的小时
m表示分钟mm表示两位数的分钟
s表示秒ss表示两位数的秒
E表示星期a表示上下午
注意:在一个时间格式容器中出现的其他字符按意愿来显示
例子一:Date对象转换为字符串
例子二:字符串转换为Date对象
DateFormat类
该类可以根据给定的地区将Date转换为String
不同的地区对应的时间格式字符串是预定义的
例子
Calendar类
日历类,用于操作时间
Calendar类是一个抽象类,不能直接实例化
使用其自身提供的工厂方法
getInstance()来获取实例该方法会根据当前系统所在地区,自动判定应该使用哪一个子类实现
例子
操作时间的方式
获取某个时间单位的值(get)
给某个时间单位设置值(set)
计算时间 (add)
例子-获取某个时间单位的值(get)
例子-给某个时间单位设置值(set)
例子-计算时间 (add)
综合练习
总结
String/Date/Calendar三者之间的关系
String->SimpleDateFormat.parse()->Date
Date->Calendar.setTime()->Calendar
Calendar->Calendar.getTime()->Date
Date->SimpleDateFormat.parse()->String
最后更新于