Java中的日期和时间类以及Calendar类用法详解

Java中日期和时间类以及Calendar类用法详解

Java中有三个主要的日期时间类:Date、Calendar和SimpleDateFormat。在Java 8及以上版本中,还增加了新的日期时间API(即java.time包)。

1. Date类

日期类java.util.Date最初设计用于表示当前时间。Date自基准时间(1970年1月1日)以来的毫秒数存储日期和时间。

以下是Date类的例子,展示如何使用Date类来获取并打印出当前日期、时间。

import java.util.*;
public class DateExample {
    public static void main(String args[]) {
        Date date = new Date();
        System.out.println("Current date: "+date);
    }
}

上述代码运行后的输出结果为 :

Current date: Wed Jun 03 14:23:08 PDT 2020

但是从Java 8开始,官方不再推荐使用Date类。因此,在Java 8之前使用Date类,建议使用Calendar类。

2. Calendar类

Calendar(日历)类是一个抽象类,它提供了许多方法来操作日期和时间。它也给出了实例化为特定瞬间的方法。Calendar支持“秒”和“毫秒”粒度。

下面是Calendar类的一个例子,展示如何使用Calendar类来获取并打印出特定日期的日期、月份和年份:

import java.util.*;
public class CalendarExample {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2020);
        cal.set(Calendar.MONTH, Calendar.MAY);
        cal.set(Calendar.DAY_OF_MONTH, 16);
        System.out.println(
            "Calendar's Year: " + cal.get(Calendar.YEAR));
        System.out.println(
            "Calendar's Month: " + cal.get(Calendar.MONTH));
        System.out.println(
            "Calendar's Day of Month: " + cal.get(Calendar.DAY_OF_MONTH));
    }
}

上述代码运行后的输出结果为:

Calendar's Year: 2020
Calendar's Month: 4
Calendar's Day of Month: 16

这里需要注意,Calendar的月份以0开始,例如:0代表一月,1代表二月,以此类推。

3. SimpleDateFormat类

SimpleDateFormat类提供格式化和解析操作日期和时间。它允许指定自定义的日期格式符号来格式化日期时间。以下是一些常用日期格式符号:

符号 含义
yyyy 年份,例如:1998, 2020
MM 月份,例如:01,12
MMM 简写月份,例如:Jan,Dec
dd 两位数的日期,例如:01,31
E 星期几,例如:Sun, Mon, Tue...
HH 小时(24小时制),例如:00,23
hh 小时(12小时制),例如:00,12
mm 分钟,例如:00,59
ss 秒钟,例如:00,59
SSS 毫秒数,例如:234,543
z 时区,例如:GMT,UTC,CST

以下是SimpleDateFormat类的一个例子,展示如何使用不同的日期格式来展示日期:

import java.util.*;
import java.text.*;
public class SimpleDateFormatExample {
    public static void main(String args[]) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz");
        System.out.println("当前时间是 : " + sdf.format(date));
    }
}

上述代码运行后的输出结果为:

当前时间是 : 2020-06-03 14:23:08.854 PDT

4. Java 8 新的日期时间API

Java 8新的日期API中,包括了java.time包,其中最常用的类为LocalDateTime。LocalDateTime类是线程安全的,因为它是不可变的。

下面是一个简单示例展示了如何使用LocalDateTime类获取并打印当前的日期和时间:

import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println("Current LocalDateTime: " + currentDateTime);
    }
}

上述代码运行后的输出结果为:

Current LocalDateTime: 2020-06-03T14:23:08.854

结论

在Java中处理日期和时间是非常重要的,因为几乎所有的程序都会在一定程度上使用这些东西。在使用日期和时间API时,请牢记它们的特点和使用方法。在Java 8及以上的版本中,新日期时间API已经几乎代替了旧的API。在处理日期和时间时,请始终使用最新的API。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的日期和时间类以及Calendar类用法详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 详解java各种集合的线程安全

    详解java各种集合的线程安全 在多线程程序中,对于集合类的操作可能会涉及到多个线程同时读写,此时需要考虑线程安全的问题。Java提供了许多线程安全的集合类,本篇文章将详细讲述Java中各种集合的线程安全性问题,以及如何使用这些集合类来保证线程安全。 简介 Java中常用的集合类可以分为List、Set和Map三大类。其中,List表示有序的集合,元素可以重…

    Java 2023年5月18日
    00
  • SpringMvc后台接收json数据中文乱码问题详解

    下面我将详细讲解关于 SpringMvc 后台接收 JSON 数据中文乱码问题的解决方案。 问题描述 当我们使用 SpringMvc 后台接收 JSON 数据时,常常会出现中文乱码的问题。具体表现为前端使用 axios 或 jQuery.ajax 等发送中文数据时,后台接收到的数据变成了一串乱码,而且无法正常处理和显示。 原因分析 造成这个问题的原因是因为客…

    Java 2023年5月26日
    00
  • Java使用System.currentTimeMillis()方法计算程序运行时间的示例代码

    下面我来详细讲解使用Java中的System.currentTimeMillis()方法计算程序运行时间的完整攻略。 一、System.currentTimeMillis()方法 System.currentTimeMillis()是Java中的一个常用方法,用于获取当前时间戳,即从1970年1月1日0时0分0秒开始到现在的毫秒数,返回类型为long。 二、…

    Java 2023年5月20日
    00
  • Struts拦截器实现拦截未登陆用户实例解析

    Struts拦截器实现拦截未登录用户实例解析 什么是Struts拦截器? Struts2拦截器是请求处理流程中的组件,它可以拦截一个请求和响应,也可以在一个请求被处理前或被处理后插入一些处理逻辑。对于网站的作者和开发人员来说,Struts2拦截器可以帮助我们快速构建一个完整的Web应用。 Struts拦截器如何实现拦截未登录用户? Struts2开发框架允许…

    Java 2023年5月20日
    00
  • 使用maven shade插件解决项目版本冲突详解

    首先,需要清楚的是,当我们使用Maven构建项目时,会引入许多第三方依赖,有时这些依赖版本存在冲突,会导致我们的项目无法正常编译和运行。这时候就需要使用Maven Shade Plugin来解决依赖版本冲突问题。 以下是Maven Shade Plugin的使用教程: 1. 添加Maven Shade Plugin插件到项目中 在项目中的pom.xml文件中…

    Java 2023年6月2日
    00
  • 详解Java如何优雅的实现字典翻译

    详解Java如何优雅的实现字典翻译的完整攻略如下: 1. 确定需求和选型 首先,我们需要明确需求:实现一个简单的字典翻译,支持中英文互译。比如输入“hello”,能够输出“你好”。 接下来,我们需要根据需求来选择技术选型。根据需求,我们需要一个能够实现中英文互译的字典。常见的实现方式有两种:使用数据库或者使用变量/文件。由于我们的需求比较简单,可以选择使用变…

    Java 2023年5月20日
    00
  • 各种格式的编码解码工具类分享(hex解码 base64编码)

    各种格式的编码解码工具类分享 1. hex解码工具类 Hex是一种用16进制表示二进制数据的编码方式,我们可以通过Hex解码工具将16进制字符串转换成二进制数据。 以下是实现Hex解码的代码示例: public class HexUtil { /* * 将16进制字符串转换为byte数组 */ public static byte[] hex2Bytes(S…

    Java 2023年5月20日
    00
  • Java的JNI快速入门教程(推荐)

    Java的JNI快速入门教程 什么是JNI? JNI,全称Java Native Interface,是Java平台提供的用于实现Java与其他语言之间互操作性的一个机制。通过JNI,Java程序可以调用native方法实现与C/C++等本地语言代码的交互,也可以被其他语言调用。 JNI的基本原理 JNI的本质是在Java虚拟机与本地代码之间建立通信桥梁。调…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部