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));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值