Java 日期时间类的简单介绍及运用

2023-11-01

Date类

1.简介

java.util.Date类 表示特定的瞬间,精确到毫秒。

构造方法

  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。

简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻。例如:

public class DateDemo {
    public static void main(String[] args) {
        demo1();
    }

    private static void demo1() {
        Date date1 = new Date();
        System.out.println(new Date(0L));
      /*  Thu Jan 01 08:00:00 GMT+08:00 1970*/
        System.out.println(date1);
        /*Thu Mar 19 10:46:46 GMT+08:00 2020*/
    }

}

tips:在使用println方法时,会自动调用Date类中的toString方法。Date类对Object类中的toString方法进行了覆盖重写,所以结果为指定格式的字符串。

2.常用方法

Date类中,常用的方法有:

  • public long getTime() 把日期对象转换成对应的时间毫秒值。
System.out.println(date1.getTime());
//1584586006912

DateFormat类

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换。

  • 格式化:按照指定的格式,从Date对象转换为String对象。
  • 解析:按照指定的格式,从String对象转换为Date对象。

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准。构造方法为:

  • public SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

参数pattern是一个字符串,代表日期时间的自定义格式。

格式规则

常用的格式规则为:

标识字母(区分大小写) 含义
y
M
d
H
m
s

备注:更详细的格式规则,可以参考SimpleDateFormat类的API文档。

创建SimpleDateFormat对象的代码如:

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormat{
    public static void main(String[] args) {
        // 对应的日期格式如:2020-03-19 10:54:38
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }    
}

常用方法

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。
  • public Date parse(String source):将字符串解析为Date对象。
format方法

使用format方法的代码为:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String format = dateFormat.format(date);
System.out.println(format);
//2020-03-19 11:04:36
parse方法

使用parse方法的代码为:

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 Date date = new Date();
 Date parse = dateFormat.parse("2020-03-19 11:04:36");
 System.out.println(parse);
 //Thu Mar 19 11:04:36 GMT+08:00 2020

Calendar类

简介

java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

获取方式

Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:

Calendar静态方法

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历

例如:

public class CalendarDemo {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
    }
}

常用方法

根据Calendar类的API文档,常用方法有:

  • public int get(int field):返回给定日历字段的值。
  • public void set(int field, int value):将给定的日历字段设置为给定值。
  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

Calendar类中提供很多成员常量,代表给定的日历字段:

字段值 含义
YEAR
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)
get/set方法

get方法用来获取指定字段的值,set方法用来设置指定字段的值,代码使用演示:

 Calendar calendar = Calendar.getInstance();
 System.out.println(calendar.get(Calendar.YEAR));
 //2020
 System.out.println(calendar.get(Calendar.MONTH)+1);
 //西方月份0-11 东方1-12
 //3
 System.out.println(calendar.get(Calendar.DATE));
 //19
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2020);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2020年3月19日
add方法

add方法可以对指定日历字段的值进行加减操作,如果第二个参数为正数则加上偏移量,如果为负数则减去偏移量。代码如:

 Calendar cal = Calendar.getInstance();
 System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2020年3月21日
 // 使用add方法
 cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
 cal.add(Calendar.YEAR, -3); // 减3年
 System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2017年3月21日; 
getTime方法

Calendar中的getTime方法并不是获取毫秒时刻,而是拿到对应的Date对象。

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
 //Thu Mar 19 11:21:25 GMT+08:00 2020

tips:

​ 西方星期的开始为周日,中国为周一。

​ 在Calendar类中,月份的表示是以0-11代表1-12月。

​ 日期是有大小关系的,时间靠后,时间越大。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 日期时间类的简单介绍及运用 的相关文章

  • 如何将变量的全部内容发送/导出到文本文件/xml 文件/剪贴板?

    我想将实例的内容 最好以树形形式 发送给某人 打印屏幕是不行的 因为类太复杂了 您需要将输出转回实例吗 在这种情况下 其他答案都是正确的 如果您只想手动检查实例的内容 理想情况下您的类都将实现toString 你可以将其重定向到一个文件 如
  • 在Java中将*s打印为三角形?

    我在 Java 课程中的作业是制作 3 个三角形 一份左对齐 一份右对齐 一份居中 我必须为什么类型的三角形制作一个菜单 然后输入需要多少行 三角形必须看起来像这样 到目前为止 我能够完成左对齐的三角形 但我似乎无法获得其他两个 我尝试用谷
  • 如何在 Java 中访问嵌套的 HashMap?

    我有一个 Java 中的 HashMap 其中的内容 你们可能都知道 可以通过以下方式访问 HashMap get keyname 如果一个 HashMap 位于另一个 HashMap 中 即嵌套的 HashMap 我将如何访问内容 我可以
  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • Quarkus 不以编程方式选择 bean

    我试图以编程方式选择 bean 但 quarkus 不会注入 bean 并引发异常 不支持吗 public enum ReportType ONE TWO Qualifier Retention RUNTIME Target METHOD
  • Java 读取大文本文件时出现 OutOfMemoryError

    我是 Java 新手 正在读取非常大的文件 需要一些帮助来理解问题并解决它 我们有一些遗留代码 必须对其进行优化才能正常运行 文件大小仅在 10mb 到 10gb 之间变化 只有当文件开始大小超过 800mb 时才会出现启动问题 Input
  • 迁移到Java 9或更高版本时是否需要切换到模块?

    我们目前正在从 Java 8 迁移到 Java 11 但是 升级我们的服务并没有我们预期的那么痛苦 我们基本上只需要更改我们的版本号build gradle文件和服务都顺利启动并运行 我们升级了库以及使用这些库的 微 服务 到目前为止没有问
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • 使用 JAX-WS 的 WebLogic 中没有模式导入的单个 WSDL

    如何使用 JAX WS 配置由 WebLogic 10 3 6 生成的 Web 服务 以将对象架构包含在单个 WSDL 文件声明 而不是导入声明 中 示例代码 界面 import javax ejb Local Local public i
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • java.lang.Object的hashCode具体使用的算法是什么

    中使用的算法是什么JVM实施java lang Object的隐含的hashCode 方法 OpenJDK or Oracle JDK答案中首选 它依赖于实现 并且在很大程度上 该算法是entirely取决于实施 只要它是一致的 但是 根据
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • java中的预增量/后增量

    有人可以帮助我理解为什么 int i 1 int j 1 int k 1 int l 1 System out println i i System out println j j System out println k k System
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 你能快速告诉我这个伪代码是否有意义吗?

    我相信我的代码现在是万无一失的 我现在将写出伪代码 但我确实有一个问题 为什么 DRJava 要求我返回 if 语句之外的内容 正如你所看到的 我为 ex 写了 return 1 只是因为它问了 但是它永远不会返回该值 谁可以给我解释一下这

随机推荐

  • MeterSphere 至善篇

    简介 MeterSphere 是一站式开源持续测试平台 涵盖测试跟踪 接口测试 UI 测试和性能测试等功能 全面兼容 JMeter Selenium 等主流开源标准 有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试 加速高质量
  • 自动适配手机网页 适配手机的网站网页 网页自动适配

    自动适配手机网页 适配手机的网站网页 网页自动适配 Category xy309 Time 2012 11 21 8 54 26 点击 14次 Source 兴移 允许网页宽度自动调整 自适应网页设计 到底是怎么做到的 其实并不难 首先 在
  • (面试题)如何解决MySQL慢查询

    慢查询出现原因以及解决方法 扫描多余的数据 避免使用select from xxx 跨多表扫描数据 可以减少join 并适当反范式化 增加冗余数据 以空间换时间 索引没有建立 索引优化不当 或未应用到最佳索引 联合索引使用最左匹配 CREA
  • 【无标题】UE5从百度盘下载UEC++项目到本地所遇到的一些问题和解决方法

    从百度盘里下载UEC 项目到自己的电脑 如果直接用VS打开C 会报打不开源文件等错误 如下图所示 解决方法 删除 图中用红线框的文件夹 若是VS 版本不同也可以把 sln 文件删除 删除后再生成c 项目 若是打开VS 编译是出现以下弹窗 则
  • 一级指针

    一级指针是一种指针 它指向一块内存地址 这块内存中存储的是另一个变量的内存地址 使用一级指针 你可以间接访问到这个变量 在 C C 中 可以使用一级指针来动态分配内存 改变函数参数的值 或者通过指针传递数组 下面是一个使用一级指针的例子 i
  • Java基础 时间相关类小结[Timestamp,Date,Calendar]

    Java基础 时间相关类 Timestamp Date Calendar 前言 一 Timestamp 时间戳 二 Date 日期 三 Calendar 日历 四 Timestamp Date Calendar的转换 五 日期之间的比较 前
  • 计算机组成原理学习笔记——六、总线

    文章目录 计算机组成原理学习笔记 六 CPU总线 6 1 总线概述 6 2 总线仲裁 6 3 总线操作和定时 6 4 总线标准 小结 计算机组成原理学习笔记 六 CPU总线 6 1 总线概述 总线的猝发传送方式 一个总线周期内传输存储地址连
  • iOS架构师_架构模式(代理,block,通知,MVC,MVP,MVVM)

    1 什么是架构 没有明确的定义 属于设计的一方面 没明确的把设计和架构进行区分 它可以小到类与类之间的交互 大到不同模块之间 以及不同业务之间的交互 都可以从架构的层面去理解它 所有架构和设计模式的目的都是为了解耦合 2 基本的架构基础 案
  • windows上通过cmake-gui生成pytorch工程

    在Windows下通过cmake gui exe生成不带cuda的Torch sln工程操作步骤 PyTorch版本使用1 8 1 首先可以先通过打开cmake gui exe 指定pytorch源代码目录和生成vs2017工程的位置 然后
  • 跨库的触发器

    CREATE TRIGGER addtomsgdown ON dbo TABLE1 FOR INSERTASdeclare usernumber as varchar 11 declare messagecontent as varchar
  • Figma 常用功能及快捷键

    Figma 常用功能及快捷键 参考视频 https www bilibili com video BV1Da4y177ks t 27 Figma 快捷键 https figmacn com resource all figma shortc
  • C语言 自己的杂记,随便写的,备忘用

    C语言的主函数声明 int main int argc char argv 或者 int main void 指针 int foo 并不是生命一个名为 foo的变量 变量是foo foo的类型是 指向int的指针 int foo bar 并
  • 4、、多变量线性回归(Linear Regression with Multiple Variables)

    4 1 多维特征 目前为止 我们探讨了单变量 特征的回归模型 现在我们对房价模型增加更多的特征 例如房间数楼层等 构成一个含有多个变量的模型 模型中的特征为 x1 x2 xn 增添更多特征后 我们引入一系列新的注释 n 代表特征的数量 x
  • 第二十六章 登录检验解决⽅案 JWT

    单机tomcat应 登录检验 sesssion保存在浏览器和应 服务器会话之间 户登录成功 服务端会保存 个session 当然客户端有 个sessionId 客户端会把sessionId保存在cookie中 每次请求都会携带这个sessi
  • ctfshow web224 sql_文件上传产生sql注入 详解

    sql 文件上传产生sql注入 首先是扫描 或者 直觉检查 有个robots txt 访问这个页面 发现可以重置密码 重置后admin登录 是个文件上传 测试下来不是文件上传的漏洞 题目也是提示的sql 我这里建了个bmp的文件可以成功上传
  • API接口及apipost,postman的基本使用

    一 简介 接口是 前后端通信的桥梁 被称为 API接口 这里的接口指的是数据接口 一个接口就是 服务中的一个路由规则 根据请求响应结果 给客户端返回结果时 一般是JSON格式的 接口的作用 实现前后端通信 一般接口由一下几个部分组成 请求方
  • Shiro使用redis作为缓存(解决shiro频繁访问Redis)(十一)

    原文地址 转载请注明出处 https blog csdn net qq 34021712 article details 80791219 王赛超 之前写过一篇博客 使用的一个开源项目 实现了redis作为缓存 缓存用户的权限 和 sess
  • 一份完整的HTML模板文件、HTML中容易被忽略的基础知识点

  • Apache HBase API及备份与还原

    一 Apache HBase API Apache HBase也适用于多个外部API 有关更多信息 请参阅Apache HBase外部API 将在下一节的内容中介绍 有关使用本机HBase API的信息 请参阅User API Refere
  • Java 日期时间类的简单介绍及运用

    Date类 1 简介 java util Date类 表示特定的瞬间 精确到毫秒 构造方法 public Date 分配Date对象并初始化此对象 以表示分配它的时间 精确到毫秒 public Date long date 分配Date对象