当前位置: 首页 > news >正文

Java -- 日期类-第一代-第二代-第三代日期

目录

1. 第一代日期类

2. 第二代日期类 

3. 第三代日期

常见方法:

1. 使用now()返回表示当前日期时间的对象

2. 使用DateTimeFormatter 对象来进行格式化

3. Instant时间戳

4. 第三代日期类更多方法


1. 第一代日期类

Date:精确到毫秒,代表特定的瞬间

我们可以使用SimpleDateFormat对象,指定相应的格式 

yyyy年MM月dd日 hh:mm:ss E

// 获取当前系统时间// 这里Date 指的是java.util包里的// 默认输出的日期格式是国外的方式 因此会对其进行格式转换Date d1 = new Date();System.out.println("当前日期:"+d1);//我们可以使用SimpleDateFormat对象,指定相应的格式// 格式的字母是规定好的,不能乱写SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss E");String format = sdf.format(d1);System.out.println("当前日期="+format);// 可以把一个格式化的字符串String转换成对应的Date// 得到Date仍然是在输出时,还是国外的格式  如果需要指定格式 通过SimpleDateFormat// 在把String -> Date ,使用的sdf格式需要和String一样

2. 第二代日期类 

Calendar类(日历)

Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR,MONTH,DAY_OF_MONTH,HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(即获得下星期的日期)提供了一些方法。

// 是一个抽象类 并且构造器是private// 可以通过 getInstance()获取实例// 提供大量的方法和字段可使用Calendar c = Calendar.getInstance();//创建日历类对象System.out.println("c="+c);// 获取日历字段System.out.println("年:"+c.get(Calendar.YEAR));System.out.println("月:"+c.get(Calendar.MONTH)+1);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));

3. 第三代日期

常见方法:

1. LocalDate(日期/年月日),2. LocalTime(时间/时分秒),3. LocalDateTime(日期时间/年月日时分秒)

前俩代日期有不足的,Calendar存在问题:

1. 可变性:像日期和时间这样的类应该是不可变的。

2. 偏移性:Date中的年份是从1900开始的,而月份都从0开始

3. 格式化:格式化只对Date有用,Calendar不行。

4. 他们不是线程安全的,不能处理闰秒。

1. 使用now()返回表示当前日期时间的对象

LocalDateTime ldt = LocalDateTime.now();System.out.println(ldt);System.out.println("年="+ldt.getYear());System.out.println("月="+ldt.getMonth());System.out.println("月="+ldt.getMonthValue());System.out.println("日="+ldt.getDayOfMonth());System.out.println("时="+ldt.getHour());System.out.println("分="+ldt.getMinute());System.out.println("秒="+ldt.getSecond());

2. 使用DateTimeFormatter 对象来进行格式化

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH小时mm分钟ss秒");String format = dateTimeFormatter.format(ldt);System.out.println("格式化的日期="+format);

3. Instant时间戳

// 通过静态方法 now()获取代表当前时间戳的对象Instant now = Instant.now();System.out.println(now);// 通过我们的from方法可以把Instant转成DateDate date = Date.from(now);// 通过date的toInstant()可以把date转成Instant对象Instant instant = date.toInstant();

4. 第三代日期类更多方法

 localDateTime类

 MonthDay类:检查重复事件  

是否是闰年

使用plus方法测试增加时间的某个部分

使用minus方法测试查看一年前和一年后的日期

http://www.dtcms.com/a/323361.html

相关文章:

  • 05.【数据结构-C语言】栈(先进后出,栈的实现:进栈、出栈、获取栈顶元素,栈实现代码,括号匹配问题)
  • 分布式事务Seata TCC模式篇
  • 【代码篇】关于PartiallyPassword插件_实现文章加密
  • 不同类型模型的样本组织形式
  • 机器翻译:FastText算法详解与Python的完整实现
  • Java-线程线程的创建方式
  • 十九、MySQL-DQL-基本查询
  • 校招秋招春招实习快手在线测评快手测评题库|测评解析和攻略|题库分享
  • 【unitrix数间混合计算】2.10 小数部分特征(bin_frac.rs)
  • 【和春笋一起学C++】(三十三)名称空间的其他特性
  • 小米开源大模型 MiDashengLM-7B:不仅是“听懂”,更能“理解”声音
  • B.10.01.5-电商系统的设计模式应用实战
  • 制作浏览器CEFSharp133+X86+win7 之 javascript交互(二)
  • Javaweb - 14.1 - 前端工程化
  • 从依赖外部提示的显式思维链(CoT),到内部自洽的内化推理(Internalized Reasoning)
  • ConcurrentHashMap源码详解
  • 虚拟手机号工具使用
  • 年轻新标杆!东方心绣脸韧带年轻技术升级发布
  • 基于大语言模型的智能问答系统研究
  • 谷歌官方性能文档:Android 动态性能框架优化Performance Hint API
  • Go 实用指南:如何执行 Skyline 查询(Pareto 最优点筛选)
  • [激光原理与应用-201]:光学器件 - 增益晶体 - 概述
  • Dell PowerEdge: Servers by generation (按代系划分的服务器)
  • leetcode 283. 移动零 - java
  • 【12】 神经网络与深度学习(下)
  • [激光原理与应用-204]:光学器件 - LD激光二极管工作原理以及使用方法
  • 网络超时处理与重试机制:Go最佳实践
  • 【R语言】多样本单细胞分析_SCTransform+Harmony方案(2)
  • Q-learning强化算法万字详解
  • 【工作流引擎】Flowable 和 Activiti