java笔记之日期类总结-爱代码爱编程
源自韩和平零基础30天学java的学习总结
一、第一代日期类
在java.util包下的Date类
1.获取当前系统时间
Date date = new Date();
System.out.println(date);
这里默认输出的日期形式是国外的形式,因此需要2进行转换
2.将日期转化为指定格式的字符串
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMM月dd日 hh:mm:ss E");
String format = sdf.format(date);
System.out.println(format);
SimpleDateFormat对象可以指定相应的格式
3.通过指定毫秒数得到时间
Date date1 = new Date(1989289432);
System.out.println(date1);
4.把一个格式化的String转成date
String s="2014年6月8日 12:34:26 星期二";
Date parse = sdf.parse(s);
System.out.println("parse="+sdf.format(parse));
这个String的内容的形式必须与SimpleDateFormat(“yyyyMM月dd日 hh:mm:ss E”)中的格式一致,否则会抛出转换异常。
格式中的yy,MM等字母是规定好的,不能乱写。可以在java jdk文档中可以查看
二、第二代日期类
1**.创建日历类对象**
Calendar c = Calendar.getInstance();
//System.out.println("c="+c);
输出日历类对象c后发现年月日等时间信息是以字段的形式在里面显示的。
2.获取日历对象的某个日历字段
System.out.println("年="+c.get(Calendar.YEAR));
3.Calendar返回月的时候是按0开始编号的
System.out.println("月="+(c.get(Calendar.MONTH)+1));
4.日
System.out.println("月"+c.get(Calendar.DAY_OF_MONTH));
System.out.println("小时="+c.get(Calendar.HOUR));
System.out.println("分钟="+c.get(Calendar.MINUTE));
System.out.println("秒="+c.get(Calendar.SECOND));
5.Calendar没有专门的格式化方法,需要程序员自己去组合。
System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日"+c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
三、第三代日期类
1. 前两类日期类的不足
java.util.Date是在jdk1.0引入的,但在jdk1.1后引入了Calendar后Date的很多方法就弃用了。
Calendar存在的问题:
(1)可变性:日期时间这样的类应该是不可变的。
(2)偏移性:Date中的年份从1900年开始,月份从0开始。
(3)格式化:Date可以格式化,而Calendar不能进行格式化。
(4)它们不是线程安全的,不能在多线程中。并且也不能处理闰秒(每隔2天,多出1s)等。
2.第三类日期类的使用
1.使用now获取当前日期时间的对象
(1)LocalDateTime:日期时间对象(可获取年月日/时分秒)
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
取出其中的字段:
System.out.println("年="+now.getYear());
System.out.println("月="+now.getMonth());
System.out.println("月="+now.getMonthValue());
System.out.println("日="+now.getDayOfMonth());
System.out.println("时="+now.getHour());
System.out.println("分="+now.getMinute());
System.out.println("秒="+now.getSecond());
(2)LocalDate对象:日期对象(可获取年月日)
LocalDate now1 = LocalDate.now();
(3)LocalTime对象:时间对象(可获取时分秒)
LocalTime now2 = LocalTime.now();
2.使用DateTimeFormatter 对象来格式化
DateTimeFormatter dtf= DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");
String format = dtf.format(now);
System.out.println("格式化的日期="+format);
3.Instanst时间戳
(1).通过now获取当前时间戳的对象
Instant now = Instant.now();
System.out.println(now);
(2).通过from可以把Instant转成Date
Date date = Date.from(now);
System.out.println(date);
(3).通过date的toInstant可以把date转成Instant对象
Instant instant = date.toInstant();
4…第三代日期类更多的方法
(1)添加时间后的时间:
LocalDateTime ldt = now.plusDays(8890);
System.out.println("8890天后的时间为: "+dtf.format(ldt));
(2)减少时间后的时间:
LocalDateTime localDateTime = now.minusHours(5500);
System.out.println("1000小时前的时间为: "+dtf.format(localDateTime));