三代日期类的基本使用

文章目录

    • 三代日期类的基本使用
  • 一、第一代日期类Date
  • 二、第二代的日期类Calendar
  • 二、第三代的日期类LocalDateTime
  • 总结

一、第一代日期类Date

Date 日期类是在java.util 包中的。
Date日期类 调用它的无参构造器 返回当前系统的时间 如下:

Date date = new Date(); //返回当前系统的时间 具体格式 是国外的格式
System.out.println(date);//输出如下
Sun Jul 10 23:31:16 CST 2022

还有与Date类 配套使用的格式转换类 SimpleDateFormat类 该类可以格式化日期 转化成一个字符串的格式。 在指定格式时所使用的字母有具体的规定,可在JDK API 中查找,如图。

Date date = new Date(); //返回当前系统的时间 具体格式 时国外的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 kk:mm:ss E");
String format = sdf.format(date); //将日期转换成指定格式的字符串
System.out.println(format);//输出如下
2022年07月10日 23:35:33 星期日

在SimpleDateFormat类中 还提供了将字符串 转化为Date日期的方法

//SimpleDateformat 类中还有方法可以将一个字符串转化成一个Data日期
//当格式 必须是new SimpleDateformat 时的格式否则会由抛出转化异常
String s = "2000年12月29日 23:13:49 星期二"; //这里字符串的格式必须要是自己设定的格式
Date parse = sdf.parse(s); //这里会 产生ParseException的编译异常可以捕获 或是抛出异常
System.out.println(sdf.format(parse));//转化后的Data默认为的时间还是国外,可以进行格式化
//输入如下
2000年12月29日 23:13:49 星期五

二、第二代的日期类Calendar

Calendar日期类时一个抽象类,它的构造器protected意味着我们不能通过 new 获得一个Calendar对象,所以我们想要获得一个Calendar具体如下:

 Calendar instance = Calendar.getInstance();//因为Calendar的构造器是protected 我们无法去new//获得对象 所以Calendar类中提供了方法 去获得它的一个实例System.out.println(instance);//输出发现并没有获得当前用户的时间 而是这个实例的引用.

Calenadar 通过特定的常量字段 来获取特定瞬间的时间.

//因为Calendar类中没有 格式化的类只有靠自身定义的常量字段 手动去格式化时间 比较的灵活
System.out.println(instance.get(Calendar.YEAR) + "年");
System.out.println(instance.get(Calendar.MONTH) + 1 + "月");//月份从0开始记数所以要加1
System.out.println(instance.get(Calendar.DAY_OF_MONTH) + "日");
System.out.println(instance.get(Calendar.HOUR_OF_DAY) + "时");
System.out.println(instance.get(Calendar.MINUTE) + "分");
System.out.println(instance.get(Calendar.SECOND) + "秒");
//输出如下
2022年
7月
11日
0时
25分
42秒

具体格式标准可以通过字符串的拼接来表示.


二、第三代的日期类LocalDateTime

因为Date,Calendar日期类有着各种的不足,在 jdk8 加入了第三代日期类LocalDateTime
LocalDateTime类中的构造器是 private 意味着也无法通过new 获得日期对象,所以其提供了
now()方法 返回当前用户日期对象.

LocalDateTime now = LocalDateTime.now();//构造器为private 通过方法获得时间对象
System.out.println(now);//输出如下
2022-07-11T01:00:33.297

LocalDateTime有一个 配对的格式化类 DateTimeFormatter

 //第三代日期有格式化类DateTimeFormatter 通过方法返回格式化对象
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss E");
System.out.println(dtf.format(now));//格式化输出如下
2022-07-11 01:02:26 星期一

注意:格式化中字符串中的字符是规定的, 可在Jdk APi(1.8或以后的版本) 中的 DateTimeFormatter中查看。

LocalDateTime中也有方法 可以获得单个具体的时间

 //第三代日期类中可以通过getXxx()方法 获取具体的时间段
System.out.println(now.getYear());//年
System.out.println(now.getMonth());//月
System.out.println(now.getDayOfMonth());//日
System.out.println(now.getHour());//时
System.out.println(now.getMinute());//分
System.out.println(now.getSecond());//秒

在LocalDateTime中还可以 获取现在时间加上或减去一段时间后的时间

//LocalDateTime 通过plusXxx() 或是minusXxx()
//以现在用户的时间 加上/减去 一段时间后的时间
System.out.println("30天后: " + dtf.format(now.plusDays(30)));//30天后
System.out.println("16月前: " + dtf.format(now.minusMonths(16)));// 16月前
//输出如下
30天后: 2022-08-10 01:11:15 星期三
16月前: 2021-03-11 01:11:15 星期四

第三代日期类中还有许多实用的方法,具体使用可自行探索.

总结

在Date 的大多数方法 在JDK1.1 引入后Calendar 就被弃用了其本身也存在在一些问题如线程不安全,没有格式化等。现如今Date也使用得很少,如需获取时间,最好使用第三代日期类LocalDateTime获取。

三代日期类的基本使用相关推荐

  1. date日期相减 java_03时间日期类

    Java8 在 java.time 包中增加了时间日期相关的API,弥补了 Java8 以前对日期.时间处理的不足. 在介绍Java8新的时间日期API前,先看看 java8 以前我们操作日期时间常用 ...

  2. string日期格式化_java面向对象---日期类

    10.日期类 (1)Date Date代表了一个特定的时间,精确到毫秒 方法名 说明 Public Date() 分配一个Date对象并将其初始化,以便它代表它被分配的时间,精确到毫秒. Public ...

  3. 日期类对象与整数之间的加法运算

    日期类对象与整数之间的加法运算 采用友元函数形式, 定义两个友元函数

  4. 蓝桥杯日期计算java_日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

  5. java日期类的计算问题_java日期计算(Calendar类)

    昨天学了java日期的格式器,主要是用SimpleDateFormat进行格式化.解析.但这还仅停留在日期的查看(调整显示格式)阶段,更重要的是日期的操作.今天继续学习,记录如下: 今天主要学习的日期 ...

  6. java 8时间操作_Java8 时间日期类操作

    Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全 ...

  7. java当中日期类的相关操作(学习笔记)

    一:引言 Calendar类是日历类,提供操作日历字段的方法,其中有常用操作 get 和 set 方法还有 add方法 详细用法请看码 二:上码 package cn.wyj.one;import j ...

  8. java中的常用日期类_Java中的常用日期类说明

    日期类常用的有三个,Date类,Calendar(日历)类和日期格式转换类(DateFormat) Date类中的大部分的方法都已经过时,一般只会用到构造方法取得系统当前的时间.public clas ...

  9. 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

最新文章

  1. cmake 学习笔记(三) (转)
  2. TP的门面Facade:静态方式调用方法
  3. Java中expecial,RxJava 学习笔记 (一)
  4. orm的理解_ORM仇恨者无法理解
  5. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等
  6. macOS Big Sur应用图标替换教程︳big sur图标包
  7. 软件开发报价模板_模板类app开发价格是多少钱?
  8. Nexus 安装与配置
  9. JNI_OnLoad
  10. 代码从stepping stone搬移到内存
  11. Linux lpadmin 命令 增加usb打印机
  12. 「公众号吸粉神级插件」实现网站下载文件需要公众号获取验证码
  13. mysql中xs表示什么_xs代表什么意思
  14. (转)42个超实用的Google Chrome 插件,值得你拥有,建议收藏!
  15. 微信小程序自定义生成动态分享内容
  16. 计算机机械硬盘寿命,机械硬盘的寿命
  17. 阿里云服务器1核1G1M能放多少个网站 跑多少流量
  18. create view 和 create or replace view的区别
  19. FastJson的JSON.isValid()出现BUG!
  20. python筛选股票5日线以上_[python]沪深龙虎榜数据进一步处理,计算日后5日的涨跌幅...

热门文章

  1. Oxffff转换成十进制
  2. abaqus python 读取文件_ABAQUS Command 如何调用或执行 Python 脚本文件
  3. 大数据应用案例,告诉你最真实的大数据故事
  4. CRC校验原理及CRC-8简单校验函数设计
  5. XMind 常用快捷键(思维导图总结)
  6. 巴菲特和盖茨的顶级对话:实现财富自由 没有那么难
  7. 软件测试工程师必备干货,移动应用测试【建议收藏】
  8. flutter 使用MD5加密
  9. 创建存储过程create procedure
  10. 知识图谱学习(一)(笔记整理)