常用日期类

news2024/11/15 8:10:44

第一代日期类

Date类

Date:精确到毫秒,代表特定的瞬间
当需要获取当前时间时可以直接new一个Date对象,使用无参构造器

Date date = new Date();

日期转文本

但是直接使用的话,它是国外的时间格式:Sat Dec 17 17:02:34 CST 2022
如果想要把它转成国内的特定格式需要使用SimpleDateFormat类格式和解析日期的类它运行将日期转成文本,或者文本转成日期

例如把上面的格式转成常用的格式 :

public class test2 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss E");
        String now = sdf.format(date);
        System.out.println(now);
    }
}

首先创建一个SimpleDateFormat 对象,传入日期格式,然后使用SimpleDateFormat 的format方法转换成对于的格式,返回给字符串now。输出now
2022年12月17日 05:06:06 星期六

注意yyyy年MM月dd日 hh:mm:ss E这个不是乱传的,每个字母代表固定的表示
在这里插入图片描述

文本转日期

当需要把一个字符串转成Date日期时,可以使用SimpleDateFormat 的parse方法

public class test2 {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        System.out.println(date);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss E");
        String s = "1988年12月17日  05:06:06 星期六";
        Date s1 = sdf.parse(s);
        System.out.println(s1);
    }
}

当然转换成功后还是默认的国外格式,如果想要变成国内格式还是使用SimpleDateFormat 的format方法

第二代日期

Calendar类

Calendar类是一个抽象类,它的构造器是私有化的。
可以通过getInstance()获取对象
它为特定的瞬间和一组YEAR,MONTH,DAY_OF_MONTH,等日历字段之间的转换提供了一些方法,且为操作他们提供了方法

Calendar的使用

获取日期:
通过getInstance方法获取

Calendar c = Calendar.getInstance();
        System.out.println(c);

此时得到的是一个比较杂乱的一些字段:
time=1671355421066,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Asia/Shanghai”,offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=11,WEEK_OF_YEAR=52,WEEK_OF_MONTH=4,DAY_OF_MONTH=18,DAY_OF_YEAR=352,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=23,SECOND=41,MILLISECOND=66,ZONE_OFFSET=28800000,DST_OFFSET=0]

所以需要通过获取我们需要的字段,其他的不显示出来。通过对象名.get方法。获取对应的日期信息

public class test2 {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        System.out.println(c);
        System.out.println("年"+c.get(Calendar.YEAR));
        System.out.println("月"+(c.get(Calendar.MONTH)+1));//因为MONTH字段是从0开始的所以要+1
        System.out.println("日"+c.get(Calendar.DAY_OF_MONTH));
        System.out.println("时"+c.get(Calendar.HOUR));//HOUR默认是12小时制,如果想要24小时制就使用HOUR_OF_DAY
        System.out.println("分"+c.get(Calendar.MINUTE));
        System.out.println("秒"+c.get(Calendar.SECOND));
    }
}

Calender没有专门的格式方法,所以需要程序员自定义组合格式

第三代日期类

JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK1.1引入Calendar类之后被弃用了。
而Calendar也存在问题:
1)可变性:像曰期和时间这样的类应该是不可变的。
2)偏移性:Date中的年份是从1900开始的,而月份都从0开始
3)格式化:格式化只对Date有用,Calendar则不行。
4)此外,它们也不是线程安全的;不能处理闰秒等(每隔2天,多出1s)

所以又产生了第三代日期:
LocalDate(日期)LocalTime(时间)LocalDateTime(日期+时间)JDK8
LocalDat只包含日期,可以获取日期字段
LocalTime只包含时间,可以获取时间字段
LocalDateTime包含日期和时间,可以获取日期和时间的字段

使用演示:
获取对象:使用now方法

LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);

获取到的时间是:2022-12-18T17:49:00.840
也可以通过getXXX获取到单独的字段:

public class test2 {
    public static void main(String[] args) {
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);
        System.out.println("年"+ldt.getYear());
        System.out.println("月"+ldt.getMonth()+ldt.getMonthValue());//getMonth是获取月份的英文,getMonthValue是获取数字月份
        System.out.println("日"+ldt.getDayOfMonth());
        System.out.println("时"+ldt.getHour());
        System.out.println("分"+ldt.getMinute());
        System.out.println("秒"+ldt.getSecond());
    }
}

输出:
2022-12-18T17:51:52.406
年2022
月DECEMBER12
日18
时17
分51
秒52
LocalDate不会有时间相关的字段和方法,例如时分秒
LocalTime不会有日期相关的字段和方法,例如年月日

LocalDateTime格式化

同Date类一样,第三代日期也可以使用一个格式化类来自定义格式化。
DateTimeFormatter类格式化类,可以通过ofPattern方法得到此对象。然后使用format方法选择要格式化哪个对象
使用演示

 LocalDateTime ldt = LocalDateTime.now();
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm:ss");
        String format = dtf.format(ldt);
        System.out.println(format);

2022年12月18日 06:10:40

Instant时间戳

LocalDateTime是系统所在时区的时间点,Instant是不带时区的时间点,默认是UTC时间点,Instant是精确到纳秒级的,可以跟Date相互转换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/98823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache IoTDB v1.0.0安装试用小结( linux环境)

1 简介 Apache IoTDB 是一个开源物联网时序数据库。 github地址:https://github.com/apache/iotdb 2 下载 下载地址:https://iotdb.apache.org/Download/ 下载,输入命令: wget https://archive.apache.org/dist/iotdb/1.0.…

【简单工厂模式-2】简单工厂模式的代码实现及使用场景

简单工厂模式并属于Gof 23个经典设计模式其中之一,只是通常会将它作为学习其他工厂设计模式的入门,而且在开发中,简单工厂模式也是比较常见的,设计思想比较简单。 1. 定义 简单工厂模式定义一个工厂类,提供获取对象的…

Makefile、.mk、.bp、Blueprint、Soong、kati工具链的关系

一、Android版本相应的发展演变过程: Android 7.0引入ninja和kati Android 8.0使用Android.bp来替换Android.mk,引入Soong Android 9.0强制使用Android.bp 二、生成.ninja工具链关系:Android.bp、Blueprint、Soong、kati:总之都是用来把Make…

数据库拆分4--使用sharding-jdbc来实现水平拆分

有三张表 user log order表,先将user log 和order垂直分库,然后将user表水平拆分 配置文件 spring.shardingsphere.enabledtruespring.shardingsphere.datasource.nameswim-user,wim-orderspring.shardingsphere.datasource.wim-user.typecom.alibaba.…

vue入门--2

1.计算属性和侦听器 计算属性 VS 方法 如果不使用计算属性,在 methods 里定义了一个方法,也可以实现相同的效果,甚至该方法还可以接受参数,使用起来 更灵活。 既然 methods 同样可以解决模板中复杂逻辑计算的问题,那么…

2266. 统计打字方案数-动态规划

2266. 统计打字方案数-动态规划 Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母,Alice 需要 按 对应字母 i 次,i 是该字母在这个按键上所处的位置。 比方说,为了按出字母 s ,Alice 需要按 7 …

语雀导出markdown的图片外链问题

本文节选自本人博客:https://www.blog.zeeland.cn/archives/rgoioiabeoi32 Introduction 本人因为经常使用语雀写博客,但是因为语雀转markdown的时候图片存在防外链行为,如果想要把转出的markdown发表在其他平台,就需要把md中所有…

计算机毕设Python+Vue邢台市公寓式月亮酒店管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

jsp+ssm计算机毕业设计大学生心理咨询网站【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

java计算机毕业设计springboot+vue地铁站自动售票系统-火车票售票系统

项目介绍 本系统是针对目前地铁站自动售票的实际需求,从实际工作出发,对过去的地铁站自动售票管理系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构…

Nacos系列——配置的创建与获取

Nacos系列——配置的创建与获取配置的创建与获取本文资源官方文档创建配置获取Nacos配置程序目录1.引入依赖完整pom2.设置yaml3.配置读取类NacosBasedProperties4.构建日志打印工具LoggerUtil5.构建Nacos基础服务类实现6.构建自动化任务实现结果配置的创建与获取 本文资源 ht…

非零基础自学Golang 第11章 文件操作 11.3 处理JSON文件 11.3.1 编码JSON

非零基础自学Golang 文章目录非零基础自学Golang第11章 文件操作11.3 处理JSON文件11.3.1 编码JSON第11章 文件操作 11.3 处理JSON文件 JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。 JSON最初是属于JavaScri…

C++基础学习笔记(二)——基础入门PART2

一、数组 一个集合中,里面存放了相同类型的数据元素 特点1:数组中的每个数据元素都是相同的数据类型 特点2:数组是由连续的内存位置组成的 1.1 一维数组 一维数组定义的三种方式: 数据类型 数组名[ 数组长度 ];数据类型 数组…

高通平台开发系列讲解(充电篇)充电底层驱动 power_supply 子系统

文章目录 一、Power Supply组成二、power_supply结构体说明三、驱动接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 电池驱动采取的是 linux 内核驱动中的power_supply子系统框架进行上报电池状态。 一、Power Supply组成 power supply framework在kernel/driver…

微服务真的是万能解药吗?

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store DevWeekly收集整理每周优质开发者内容,包括开源项目、资源工具、技术文章等方面。 每周五定期发布,同步更新到 知乎:Jackpop。 欢迎大家投稿,提交issu…

Spring MVC学习 | 拦截器异常处理器

文章目录一、拦截器1.1 简介1.2 拦截器的使用1.2.1 创建1.2.2 配置1.2.3 测试1.3 多个拦截器的执行顺序1.3.1 preHandle()方法返回true1.3.2 preHandle()方法返回false二、异常处理器2.1 简介2.2 配置2.2.1 springmvc.xml中配置2.2.2 注解配置学习视频🎥&#xff1a…

编码与解码总结

标准ASC||字符集: ASC||:美国信息交换标准代码,包括了英文、数字等标准ASC||使用一个字节存储一个字符,首位是0,总供可以表示128个字符 GBK(汉字内码扩展规范,国标) 汉字编码字符集…

Apache Shiro,这一篇就够了

Apache Shiro,这一篇就够了1.Shiro实现登录拦截2.登录认证操作3.Shiro整合Mybatis4.用户授权操作5.Shiro授权6.Shiro整合Thymeleaf1.Shiro实现登录拦截 前期环境准备 准备添加Shiro的内置过滤器: Bean public ShiroFilterFactoryBean shiroFilterFact…

《美国职业橄榄球大联盟》:NFL·橄榄1号位

基本装备 NFL橄榄球是一项过程极为激烈的比赛,阻挡、拦截与冲撞都是比赛不可或缺的一部分,这也可以说是橄榄球的一大特色。为了保护球员的安全,避免因为球员受伤而耽误球赛, NFL与NCAA都要求所有球员必须“穿戴合适且合法的护具”…

IfcOpenShell正确设置几何体的坐标

在之前的文章中,我们使用 IfcOpenShell (IOS) 读取 ifc 几何并将其转换为 brep。 当我们读取 wikilab.ifc文件时,一切似乎都是正确的,但真的如此吗? 当你在项目中使用 BIM 时,坐标始终是正确讨论的主题。 就此而言&am…