日期类(java)

文章目录

  • 第一代日期类 Date
    • 常用构造方法
    • SimpleDateFormat 日期格式化类
      • 日期转字符串(String -> Date)
      • 字符串转日期 (String->Date)
  • 第二代日期类 Calendar
    • 常用字段与如何得到实例对象
    • 相关 API
  • 第三代日期类(LocalDate\TIme)
    • 日期,时间,日期时间
    • 日期时间格式化(DateTimeFormatter)
    • 时间戳
    • 计算时间(Time)对象间隔(Duration)
    • 计算日期(Date)对象间隔 (Period)
    • 日期(Date)矫正器(TemporalAdjusters)

第一代日期类 Date

常用构造方法

第一种:Date()
第二种:Date(long 毫秒)

public class Main {public static void main(String[] args) throws ParseException {//默认国外形式Date date = new Date();System.out.println(date);//创建了一个代表从1970年1月1日00:00:00 GMT开始后的1000毫秒的日期和时间。//但是输出 toString 的时候它会显示当前系统所在时区的时间。//因此,如果你的系统位于东八区(例如中国标准时间),那么输出将会是 "08:00:00"Date date1 = new Date(1000);System.out.println(date1);}
}

1000 是 一秒,1000 * 60 就是 60秒,1000 * 60 * 10 就是 10分钟



SimpleDateFormat 日期格式化类

在这里插入图片描述

在这里插入图片描述


日期转字符串(String -> Date)

用 String format(Date date) 方法转成字符串

public class Main {public static void main(String[] args) throws ParseException {Date date = new Date();//y:年份,M:年中月份,d:月中日期,F:星期, H:一天中的小时,m:小时中的分钟SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");//转成字符串String date1 = sdf.format(date);//输出2024-06-28 星期 4 22:42System.out.println(date1);}
}

字符串转日期 (String->Date)

用 Date parse(String source) 转成 Date

public class Main {public static void main(String[] args) throws ParseException {String data = "2024-6-28 星期5 22:49";//格式和上面对不上会报 parseException 异常		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");Date date = sdf.parse(data);System.out.println(data);}
}

格式和上面对不上会报 parseException 异常




第二代日期类 Calendar

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



常用字段与如何得到实例对象

在这里插入图片描述
Calender 没有专门的格式化方法,需要程序员自己组合

public class Main {public static void main(String[] args) throws ParseException {Calendar calendar = Calendar.getInstance();System.out.println(calendar);//底层是这样的:public static final int YEAR = 1;int year = calendar.get(1);int year2 = calendar.get(Calendar.YEAR);System.out.println(year);System.out.println(year2);}
}


相关 API

在这里插入图片描述

public class Main {public static void main(String[] args) throws ParseException {Calendar calendar = Calendar.getInstance();//把年设置成 2004calendar.set(Calendar.YEAR, 2004);System.out.println(calendar.get(Calendar.YEAR));//加一年calendar.add(Calendar.YEAR, -1);System.out.println(calendar.get(Calendar.YEAR));//关联日期String strDate = "2008-05-20 15:30:30";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(strDate);calendar.setTime(date);System.out.println(calendar.get(Calendar.YEAR));}
}



第三代日期类(LocalDate\TIme)

JDK 8 加入的
LocalDate (日期/年月日),LocalTime (时间/时分秒),LocalDateTime (日期时间)

老日期类,线程不安全, 新的支持线程安全,建议直接用这个就行



日期,时间,日期时间

在这里插入图片描述

public class Main {public static void main(String[] args) throws ParseException {//获取当前日期LocalDateTime ldt = LocalDateTime.now();System.out.println(ldt);//获取指定日期时间LocalDateTime ldt2 = LocalDateTime.of(2024,6,29,10,10);System.out.println(ldt);//加减日期ldt2 = ldt2.plusYears(2).plusYears(-1);System.out.println(ldt2);//获取年int year = ldt2.getYear();System.out.println(year);}
}


日期时间格式化(DateTimeFormatter)

在这里插入图片描述
在这里插入图片描述

public class Main {public static void main(String[] args) throws ParseException {//LocalDateTime -> StringLocalDateTime localDateTime = LocalDateTime.now();DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");String s = dtf.format(localDateTime);System.out.println(s);//String -> LocalDateTimeString date = "2024-06-29";DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");//格式不对会抛 parse 异常LocalDate localDate =  LocalDate.parse(date, dtf2);System.out.println(localDate);}
}

如果是 LocalDateTime 必须要包含时间和日期



时间戳

时间戳:1970年1月1日零时零分零秒,到系统当前时间的总毫秒数

public class Main {public static void main(String[] args) throws ParseException {//获取系统当前时间(UTC:全球标准时间)Instant instant = Instant.now();//获取时间戳long cuo = instant.toEpochMilli();System.out.println(cuo);}
}


计算时间(Time)对象间隔(Duration)

在这里插入图片描述

public class Main {public static void main(String[] args) throws ParseException {LocalDateTime time1 = LocalDateTime.of(2024, 6,29,8,8);LocalDateTime time2 = LocalDateTime.of(2023, 5,27,8,8);//两时间对象相差对少天//后面 - 前面Duration duration = Duration.between( time2,time1);System.out.println(duration.toDays());//两时间相差多少天System.out.println(duration.toHours());}
}


计算日期(Date)对象间隔 (Period)

在这里插入图片描述

public class Main {public static void main(String[] args) throws ParseException {LocalDate localDate1= LocalDate.of(2007, 7,7);LocalDate localDate2 = LocalDate.of(2008, 7,7);Period between = Period.between(localDate1, localDate2);//相差年数System.out.println(between.getYears());}
}


日期(Date)矫正器(TemporalAdjusters)

public class Main {public static void main(String[] args) throws ParseException {//获取系统当前时间LocalDateTime now = LocalDateTime.now();//矫正时间LocalDateTime localDateTime = now.with(TemporalAdjusters.lastDayOfMonth());System.out.println(localDateTime);}
}

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

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

相关文章

springboot + Vue前后端项目(第二十一记)

项目实战第二十一记 写在前面1. springboot文件默认传输限制2. 安装视频插件包命令3. 前台Video.vue4. 创建视频播放组件videoDetail.vue5. 路由6. 效果图总结写在最后 写在前面 本篇主要讲解系统集成视频播放插件 1. springboot文件默认传输限制 在application.yml文件中添…

pip安装neuralcoref失败ERROR

最终解决的方法如下: git clone https://github.com/huggingface/neuralcoref.git cd neuralcoref pip install -r requirements.txt python setup.py install 原始步骤: 安装 neuralcoref 的依赖: 安装编译 neuralcoref 所需的依赖项&am…

PHP If...Else 语句的深入解析

PHP If...Else 语句的深入解析 在PHP编程语言中,if...else 语句是一种基本且强大的控制结构,它允许根据特定条件执行不同的代码块。这种结构对于决策制定和流程控制至关重要,是每位PHP开发者必须熟练掌握的内容。本文将详细探讨if...else语句…

boost asio异步服务器(4)处理粘包

粘包的产生 当客户端发送多个数据包给服务器时,服务器底层的tcp接收缓冲区收到的数据为粘连在一起的。这种情况的产生通常是服务器端处理数据的速率不如客户端的发送速率的情况。比如:客户端1s内连续发送了两个hello world!,服务器过了2s才接…

MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式

电动汽车 (EV) 牵引逆变器是电动汽车的。它将高压电池的直流电转换为多相(通常为三相)交流电以驱动牵引电机,并控制制动产生的能量再生。电动汽车电子产品正在从 400V 转向 800V 架构,这有望实现: 快速充电 – 在相同…

WPF 2024 金九银十 最新 高级 架构 面试题 C#

含入门 初级 中级 高级 不同级别WPF的面试题 相关面试题 redis安装说明书 http://t.csdnimg.cn/iM260 单体并发瓶颈 redis sqlsever mysql多少 http://t.csdnimg.cn/DTXIh Redis高频面试题http://t.csdnimg.cn/FDOnv 数据库SqlServer笔试题 数据库SqlServer笔试题-CSDN博客 SQL…

绝了!Stable Diffusion做AI治愈图片视频,用来做副业简直无敌!10分钟做一个爆款视频保姆教程

一 项目分析 这个治愈类视频的玩法是通过AI生成日常生活场景,制作的vlog,有这样的一个号,发布了几条作品,就涨粉了2000多,点赞7000多,非常的受欢迎。 下面给大家看下这种作品是什么样的,如图所…

探索高效开发神器:Blackbox AI(免费编程助手)

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 🤖 想要代码生成?👌 💬 需要和AI聊天解决难题?&#…

Ubuntu使用c++

Ubuntu使用c 一、安装编译器和开发工具二、创建一个c文件并运行1.创建一个c2.编译运行 一、安装编译器和开发工具 先安装vim sudo apt install vim再安装GUN编译器合集(GCC) sudo apt install build-essential使用g -v查看版本确定安装成功 二、创建…

Javaweb-初学

1.利用springboot开发一个web应用 简要流程,如下图 2.如何创建一个springboot的项目,下面两张图片是重点关注 第一张图片记得和图片一样改一下路径 第二张就是勾一个选项 3.第一个简单的springboot应用的开发 根据如下步骤进行操作 首先顶部要标识Res…

TensorFlow的学习1.2-基本概念

TensorFlow的学习2-基本概念 1. 张量(Tensor)2. 变量(Variable)3. 操作(Operation)4. 计算图(Computational Graph)5. 会话(Session)6. Eager Execution7. 数…

LinkedIn被封原因和解封方法

对于初识领英和对领英生态规则不熟悉的人来说,很容易造成领英账号被封号(被限制登录)的情况,那么如何才能避免和解决领英帐号被封号(被限制登录)的难题呢? 领英帐号被封号或被限制登录主要会有两类情况。 首先要搞清楚, Linkedi…

IP白名单及其作用解析

在网络安全领域,IP白名单是一项至关重要的策略,它允许特定的IP地址或地址范围访问网络资源,从而确保只有受信任的终端能够连接。下面,我们将深入探讨IP白名单的定义、作用以及实施时的关键考虑因素。 一、IP白名单的定义 IP白名单…

HTML与Python生成验证码的对比分析

前言 验证码(CAPTCHA)是确保用户行为为人类而非机器人自动执行的一种安全机制。通过图形、文字、或其他手段生成复杂的验证码来防止自动化攻击是一种常见的方法。本文将对比分析使用HTML与JavaScript和Python生成验证码的两种方式,探讨各自的…

【scau大数据原理】期末复习——堂测题

一、集群安装知识 启动集群的命令start-all.sh位于 Hadoop安装目录的sbin文件夹 目录下。 bin文件夹下包含常见的Hadoop,yarn命令;sbin命令下包含集群的启动、停止命令。 启动集群的命令start-all.sh包含 同时启动start-dfs.sh和start-yarn.sh 功能。…

AI与Python共舞:如何利用深度学习优化推荐系统?

AI与Python共舞:如何利用深度学习优化推荐系统? 当你在浏览新闻、电影或是购物平台时,那些仿佛读懂你心思的个性化推荐背后,正是AI技术与Python语言的精妙协作。今天,我们将通过一个实际案例,探索如何利用…

Python 面试【中级】

欢迎莅临我的博客 💝💝💝,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!!

已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 实现…

大数据面试题之Hive(1)

说下为什么要使用Hive?Hive的优缺点?Hive的作用是什么? 说下Hive是什么?跟数据仓库区别? Hive架构 Hive内部表和外部表的区别? 为什么内部表的删除,就会将数据全部删除,而外部表只删除表结构?为什么用外部表更好? Hive建表语句?创建表时使…

Vite:打包时去除console

需求描述 在生产环境下,Vite打包项目时,需要去除开发时加入的console、debugger调试信息,但是又不想引入terser。 解决方案 esbuild 参考: esbuild - API 修改配置 修改vite.config.js配置文件,新增配置项如下&…