3.3. 日期与时间类(Date、Calendar、LocalDate等)

news2024/10/6 10:34:19

在Java中,我们经常需要处理日期和时间。Java提供了一些类来帮助我们完成这些任务,如DateCalendarLocalDateLocalTimeLocalDateTimeZonedDateTime等。我们将分别介绍这些类,并给出相应的示例。

1. Date类

Date类是Java提供的一个表示日期和时间的类。但是,由于设计上的缺陷,许多方法已经被废弃。因此,我们更推荐使用Calendar类和Java 8中引入的新的日期时间API。

以下是Date类的一些常用方法:

  • Date():构造一个表示当前日期和时间的Date对象。
  • getTime():返回自1970年1月1日0时0分0秒以来的毫秒数。

2. Calendar类

Calendar类是一个抽象类,它提供了一些方法来操作日期和时间。Calendar类的子类如GregorianCalendar,它表示公历日期。Calendar类的常用方法有:

  • getInstance():返回一个表示当前日期和时间的Calendar对象。
  • get(int field):返回指定字段的值。
  • set(int field, int value):设置指定字段的值。
  • add(int field, int amount):给指定字段添加指定的值。
  • getTime():返回表示Calendar对象的日期和时间的Date对象。

以下是Calendar类的一些常量:

  • YEAR:年
  • MONTH:月
  • DATE:日
  • HOUR:小时(12小时制)
  • HOUR_OF_DAY:小时(24小时制)
  • MINUTE:分
  • SECOND:秒

3. LocalDate、LocalTime、LocalDateTime和ZonedDateTime类

Java 8引入了新的日期时间API,包括LocalDateLocalTimeLocalDateTimeZonedDateTime等类。这些类是不可变的,线程安全的,并且设计上更符合实际需求。

以下是这些类的一些常用方法:

  • now():返回表示当前日期或时间的对象。
  • of(...):根据指定的参数创建对象。
  • plusDays(long daysToAdd):返回增加指定天数后的对象。
  • minusDays(long daysToSubtract):返回减去指定天数后的对象。
  • plusHours(long hoursToAdd):返回增加指定小时数后的对象。
  • minusHours(long hoursToSubtract):返回减去指定小时数后的对象。
  • format(DateTimeFormatter formatter):使用指定的格式化器将对象格式化为字符串。

4. 示例

下面是一个使用日期和时间类的示例:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        // 使用Date类
        Date date = new Date();
        System.out.println("当前日期和时间:" + date);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("格式化后的日期和时间:" + sdf.format(date));

        // 使用Calendar类
        Calendar calendar = Calendar.getInstance();
        System.out.println("年:" + calendar.get(Calendar.YEAR));
        System.out.println("月:" + (calendar.get(Calendar.MONTH) + 1)); // 月份从0开始,所以需要加1
        System.out.println("日:" + calendar.get(Calendar.DATE));
        System.out.println("小时:" + calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println("分钟:" + calendar.get(Calendar.MINUTE));
        System.out.println("秒:" + calendar.get(Calendar.SECOND));

        // 使用LocalDate、LocalTime和LocalDateTime类
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();

        System.out.println("当前日期:" + localDate);
        System.out.println("当前时间:" +localTime);
        System.out.println("当前日期和时间:" + localDateTime);

        // 使用ZonedDateTime类
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println("当前日期和时间(带时区):" + zonedDateTime);

        // 格式化日期和时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println("格式化后的日期和时间:" + localDateTime.format(formatter));

        // 日期和时间的计算
        LocalDate tomorrow = localDate.plusDays(1);
        System.out.println("明天的日期:" + tomorrow);

        LocalTime oneHourLater = localTime.plusHours(1);
        System.out.println("一小时后的时间:" + oneHourLater);

        LocalDateTime oneWeekLater = localDateTime.plusDays(7);
        System.out.println("一周后的日期和时间:" + oneWeekLater);
    }
}

执行以上代码,将输出类似如下的结果:

当前日期和时间:Tue May 30 15:23:45 CST 2023
格式化后的日期和时间:2023-05-30 15:23:45
年:2023
月:5
日:30
小时:15
分钟:23
秒:45
当前日期:2023-05-30
当前时间:15:23:45.123456789
当前日期和时间:2023-05-30T15:23:45.123456789
当前日期和时间(带时区):2023-05-30T15:23:45.123456789+08:00[Asia/Shanghai]
格式化后的日期和时间:2023-05-30 15:23:45
明天的日期:2023-05-31
一小时后的时间:16:23:45.123456789
一周后的日期和时间:2023-06-06T15:23:45.123456789

以上就是Java常用类库中的日期与时间类的简介和示例。希望这些内容能帮助你理解和使用这些类。如果有任何疑问,请随时提问,我会尽力帮助你。

file

file

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

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

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

相关文章

Redis的地理位置(GEO)+Hypterloglog+事务测试

GEOADD 命令 - 将指定的地理空间位置(纬度、经度、名称)添加到指定的key中,这些数据将会存储到sorted set 有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。 当坐标位置超出上述指定范围时,该命令将会返…

chatgpt赋能python:Python中Numpy报错分析

Python中Numpy报错分析 Numpy是Python中重要的开源数值计算库,它提供了数组和矩阵的操作。在使用Numpy的过程中,有时候我们会遇到一些报错信息,本文将对常见的Numpy报错进行分析和解决方法的介绍。 NumPy报错信息 当我们在使用Numpy时出现…

融合PWA技术的小程序:为用户带来原生应用体验

PWA代表“渐进式网络应用”(Progressive Web Application)。它是一种结合了网页和移动应用程序功能的技术概念。PWA旨在提供类似于原生应用程序的用户体验,包括离线访问、推送通知、后台同步等功能,同时又具有网页的优势&#xff…

AIGC领域优秀的资源汇总(应用、论文、开源项目)

AIGC领域介绍,及一些比较优秀的应用,和论文,开源项目汇总。 AIGC大纲 一、AIGC概念 ​ AIGC,全名“AI generated content”,又称生成式AI,意为人工智能生成内容。例如AI文本续写,文字转图像的…

NRF52系列多个 base uuid 的问题,以client为例。

基础uuid知识 nordic的nrf sdk希望我们设置uuid的方式跟蓝牙技术联盟SIG的方式一样,也就是服务和特性的uuid是基于同一个base uuid修改产生的,比如base uuid是0x0000xxxx-0000-1000-8000-00805F9B34FB,那么服务和特性的128bit uuid就要基于此…

java8内部调用无法引用值的问题

问题:Variable used in lambda expression should be final or effectively final 具体原因: 这段代码试图将 20 赋给一个局部变量,它无法通过编译,但绝非编写错误。 这实际上是语言的设计者有意为之,用以鼓励用户使用…

优化版本 穿越火线(CF) FPS AI 自瞄 代码 权重 数据集(下面有链接)

更新初衷 本人在制作过程中,有一些爱钻研的朋友来问以及提出增加一些新的功能点回会更好,本着学习研究态度,在第一个版本上进行优化,增加一些内容 不喜欢看过程的小伙伴直接看最下面 界面 解决问题: 1、进入慢 2、无…

PyTorch-完整的模型训练套路

目录 1. 准备 1.1 使用Cifar10 1.2 item的用法 1.3 model的搭建 1.4 数据集、参数设置以及训练开始 1.5 测试集 1.6 使用tensorboard 1.7 保存每一轮的训练结果 2. 计算整体的正确率 3. 其他 3.1 train与eval 3.2 使用GPU训练 1. 准备 1.1 使用Cifar10 1.2 item的…

微信小程序授权登录

微信小程序—授权登录 一、小程序登录 登录流程时序 说明: 1.小程序端调用 wx.login() 获取临时登录凭证code ,并回传到开发者服务器。 2.服务器调用 code2Session 接口,换取 用户唯一标识 OpenID 和 会话密钥 session_key。 之后开发者服务器可以根…

2021年长三角高校数学建模竞赛A题Go!Fun游长三角解题全过程文档及程序

2021年长三角高校数学建模竞赛 A题 Go!Fun游长三角 原题再现: 又到一年毕业季,来自浙江杭州的一位大学生小李同学,家境良好,平时学习刻苦,在即将毕业之际,准备给自己安排一个毕业旅行,同时帮助…

Java 高级应用-多线程-实现 Runnable 接口与继承 Thread 类

1.1 程序、进程与线程 • 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段 静态的代码,静态对象。 • 进程(process):程序的一次执行过程,或是正…

转变范式:如何使用 5 种新模式重塑 2023 年的实体店体验

在电商盛行的当下,线上购物已成为新零售的重要组成部分,实体零售业正处于两难境地。一方面,实体零售是绝对有必要的:美国约 85% 的销售额来自实体商店。 另一方面,尽管增长放缓,但电商收入占销售总额的比例…

chatgpt赋能python:Python中图形怎么整体下移?

Python中图形怎么整体下移? 在Python中,我们常常需要处理各种各样的图形,但是有时候我们需要将图形进行整体调整,比如将所有图形下移一定距离。那么在Python中,我们该如何实现这个操作呢? 介绍 在Python…

【Linux】3、iptables

文章目录 一、设置其他机器均无法访问 a、b、c 机器的 5432 端口二、设置 d、e 可访问 a、b、c 的 5432 端口三、检查业务是否受到影响 iptables 可在 tcp 协议栈层面限制访问,常用于解决现场的各漏洞。 场景:现场有 a、b、c 三个机器组成的 postgres 集…

经纬恒润AUTOSAR成功适配智芯科技国产车规级芯片

近日,经纬恒润AUTOSAR基础软件产品INTEWORK-EAS-CP成功适配智芯半导体的Z20K14x产品家族。同时,经纬恒润完成了对智芯半导体Z20K14X 产品MCAL软件适配和工程集成,为智芯半导体提供了全套AUTOSAR解决方案。 左图:经纬恒润AUTOSAR E…

iOS 创建组件库

索引库 repo 索引文件(.podspec文件) 1.搭建私有库之前必须要先创建索引库 1)首先检查当前电脑的索引库 pod repo 2)在gitlab上创建一个新的库,这个库用来保存私有库的podspec文件,所以我们一般起名字最好是 xxxSpec用以区分…

回归预测 | MATLAB实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-BiLSTM麻雀算法优化卷积双向长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计学习总结参考资料 预测效果 基本介…

在虚拟机上部署hadoop集群(全流程)

一、单节点部署前置准备 这里一直下一步就好了 接下来需要为该节点固定ip并配置相关网关还有dns解析 这里配置了一个本机dns解析,也配置了一个公网dns解析(主要目的还是为了固定ip

知识变现:知识付费产品,怎么定价?

知识变现:知识付费产品,怎么定价? 定价,是知识博主或者培训机构、用户、竞争对手间博弈平衡后的结果。 200元以下: 只有产品,没有服务。 产品的特征是标准化、大批量。这样的知识产品,要卖给几千、几万…

CSS 实现一个动态水形波浪蒙版层

需求的最终实现效果&#xff0c;如下图&#xff0c;在盒子表面&#xff0c;绘制一个波浪形状的蒙版层&#xff08;动态的&#xff09;。 先定义一个&#xff0c;主体盒子块&#xff0c;等会儿的蒙版图层会覆盖到它的上面。 <div></div>图层采用&#xff0c;SVG进…