时间类
时间标准时间:原子钟
中国是东八区:标准时间+8小时。
计算机时间原点: 1970年1月1日 00:00:00
Date类:java.util 包 java.sql包 都有Date类
构造方法:
public Date(); 空参构造 创建Date对象,表示默认时间(此默认时间为当前电脑的时间)
public Dare(long date);带有long类型的参数,表示指定时间(从时间原点开始,过了指定毫秒的时间)
中国的电脑使用此构造方法都需要在计算时加8小时;
成员方法:
public long getTime(); 返回一个long类型的当前毫秒值
Date date = new Date();
long time = date.getTime();
sout(time);
//获取此电脑的当前时间
public void setTime(long time); 参数是long类型的毫秒值,设置从时间原点开始到指定毫秒值的时间
Date date1 = new Date();
date1.setTime(0L);
sout(date1);
//设置后的时间,过了0毫秒 还是时间原点(1970年1月1日 )。
SimpleDateFormat类:在java.text 包使用时需要导包。 可以对Date对象 格式化和解析。
严格区分大小写
y : 表示年
M: 表示月
d:表示日
H:表示小时
m:表示分钟
s:表示秒钟
//创建了Date对象
Date date = new Date();
//指定了时间格式:XXXX年XX月XX日 XX:XX:XX
//使用构造方法指定
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH:mm:ss”);
//成员方法:
//public final String format(Date date);//参数是一个Date对象 ,返回一个String 类型的字符
//public Date parse(String source); //参数是一个字符串,返回一个Date类型的对象
String time = sdf.format(date);
sout(time); //XXXX年XX月XX日 xx:xx:xx
String s = “2020-11-11 12:00:00”;
//创建时间格式必须和字符串格式相同否则会runtime异常,格式解析异常:ParseException;
SimpleDateFormat sdf1= new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
//parse方法有一个编译异常需要抛出:throws ParseException;
Date date = sdf1.parse(s);//传递一个字符串获得一个Date类型的值
JDK8新增的时间工具类 1.8版本
Date类分为:LocalDate(表示年月日) LocalTime(表示时分秒) LocalDateTime(表示年月日时分秒)
//返回一个LocalDateTime对象,打印这个对象名得到:当前时间 格式为:yyyy-MM-ddTHH:mm:ss.(后跟六位小数)
LocalDateTime now() ;//静态方法
//传入六个int 类型的整数 返回一个LocalDateTime对象,
//打印这个对象名得到:指定时间,格式为:2020-11-11T23:56:56
LocalDateTime of(2020,11,11,23,56,56); //静态方法
DateTimeFormatter类:java.time.format 包 构造方法:无, 使用类名直接调用成员方法
LocalDateTime类 :java.time 包 构造方法:无 ,使用类名直接调用成员方法
如果只需求获取年月日 或 时分秒 就可以把LocalDateTime对象转换成:
只获取年月日的 LocalDate : LocalDateTime对象名.toLocalDate 返回一个LocalDate对象
只获取时分秒的 LocalTime : LocalDateTime对象名.toLocalTime 返回一个LocalTime对象
LocalDateTime类指定格式的方法 和解析的方法
//String 字符串是时间格式如:
yyyy年MM月dd日 HH:mm:ss
或 yyyy-MM-dd HH:mm:ss
DateTimeFormatter pattern = DateTimeFormatter.ofpattern(String format);
LocalDateTime localDateTime = LocalDateTime.parse(String time,DateTimeFormatter pattern);
以下方法掌握一种即可,因为其参数可以传递负数。
传递正数参数时:增加时间
传递负数参数时:减少时间
以下方法掌握一种即可,因为其参数可以传递负数。
传递正数参数时:减少时间
传递负数参数时:增加时间
//传入一个字符串类型的规格(如:“yyyy-MM-dd HH:mm:ss”)返回一个DateTimeFormatter的对象
DateTimeFormatter pattern = DateTimeFormatter.ofpattern(String format);
//调用parse方法:
//传入一个时间的字符串.如:(“2020年11月11日 00:00:00”)和 DateTimeFormatter 类型的对象
//返回一个LocalDateTime类型的对象。 此时会出现编译时异常: 格式解析异常 throws ParseException;
LocalDateTime localDateTime = LocalDateTime.parse(String time,DateTimeFormatter pattern);
//使用LocalDateTime对象调用成员方法
//返回一个LocalDateTime的新对象
LocalDateTime newLocalDateTime = plusDays(int date);
// 时间加一天
// 使用LocalDateTime对象调用format方法,传入DateTimeFormatter对象,已经编写好的格式,
//返回一个String类型的字符串,
String time = newLocalDateTime.format(pattern);
//打印字符串即可显示一个当前指定时间加一天的时间
sout(time);
修改时间的方法:
Period类 :获取时间间隔的类(具体指的是年月日的间隔)
LocalDate ld1 = LocalDate.of(2020,1,1);
LocalDate ld2 = LocalDate.of(2048,11,11);
// ld1 , ld2
Period p = Period.between(参数为两个LocalDate对象); 返回Period对象
sout§; // P 28Y11M11D (28年11月11天)
sout(p.getYears());
sout(p.getMonths());
sout(p.getDays());
sout(p.toTotalMonths());
Duration类: 获取精确到毫秒(纳秒)的间隔:
//可以接收 LocalDateTime LocalDate LocalTime 的对象
LocalDateTime ldt1 = LocalDateTime.of(2020,11,11,12,43,43);
LocalDateTime ldt2 = LocalDateTime.of(2020,11,11,13,43,43);
// ldt1 , ldt2
Duration d = Duration.between(参数是两个接口对象);//返回一个Duration 的时间间隔对象
sout(d.toSeconds());
sout(d.toMillis());
sout(d.toNanos());