Java中Date,Calendar,Timestamp的区别以及相互转换与使用

Java中Date,Calendar,Timestamp的区别以及相互转换与使用

在Java中,DateCalendarTimestamp是处理日期和时间的三个主要的类。本文将详细介绍它们的区别以及如何相互转换和使用。

Date类

Date类是Java中最早的日期和时间处理类。它表示从GMT(格林尼治标准时间)1970年1月1日00:00:00时间开始至今的毫秒数。由于毫秒是一个长整数,因此Date类具有良好的跨平台性。Date类中的方法既可以格式化日期和时间,也可以将其解析为时间戳。以下是一个简单的Date类示例:

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

public class DateExample {
    public static void main(String[] args) {

        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = formatter.format(date);

        System.out.println("当前日期和时间为:" + formattedDate);
    }
}

输出结果:

当前日期和时间为:2021-06-30 16:22:37

Calendar类

Calendar类是一个抽象类,它提供了一种处理日期和时间的方式,使得开发人员可以操作年、月、日、时、分、秒等各个时间单位。Calendar类使得计算时间间隔、获取特定时间段的日期变得非常容易。以下是一个使用Calendar类设置时间的简单示例:

import java.util.Calendar;

public class CalendarExample {

    public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, 2021);
        calendar.set(Calendar.MONTH, 5);
        calendar.set(Calendar.DAY_OF_MONTH, 30);
        calendar.set(Calendar.HOUR_OF_DAY, 16);
        calendar.set(Calendar.MINUTE, 38);
        calendar.set(Calendar.SECOND, 50);

        System.out.println("设置日期时间为:" + calendar.getTime());
    }
}

输出结果:

设置日期时间为:Wed Jun 30 16:38:50 CST 2021

Timestamp类

Timestamp类是一个具体类,继承了Date类,并增加了对SQL中日期和时间数据类型的支持。Timestamp类存储了自1970年1月1日00:00:00 GMT以来的毫秒数,并提供了许多方便的方法来处理时间戳。以下是一个使用Timestamp类将日期转换为时间戳的示例:

import java.sql.Timestamp;
import java.text.SimpleDateFormat;

public class TimestampExample {
    public static void main(String[] args) {

        String string = "2021-06-30 16:45:00";
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Timestamp timestamp = null;

        try {
            java.util.Date date = dateFormat.parse(string);
            timestamp = new Timestamp(date.getTime());
        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("转换的时间戳为:" + timestamp.toString());
    }
}

输出结果:

转换的时间戳为:2021-06-30 16:45:00.0

相互转换

Date和Calendar之间的转换

Date类可以通过Calendar类的getTime()方法返回一个对应的时间戳,也就是毫秒数。同样,可以使用setTime()方法将Date对象转换为Calendar对象。以下是一个简单示例:

Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Date和Timestamp之间的转换

Timestamp类继承了Date类,因此可以使用getTime()setTime()方法与Date类相互转换。以下是一个简单示例:

Date date = new Date();
Timestamp timestamp = new Timestamp(date.getTime());
date = new Date(timestamp.getTime());

Calendar和Timestamp之间的转换

可以使用getTime()setTime()方法将Calendar对象转换为Timestamp对象,反之亦然。以下是一个简单示例:

Calendar calendar = Calendar.getInstance();
Timestamp timestamp = new Timestamp(calendar.getTime().getTime());
calendar.setTimeInMillis(timestamp.getTime());

总结

本文对Java中的DateCalendarTimestamp类进行了详细介绍,介绍了它们的区别,以及相互之间的转换和使用。因为Java中涉及到日期和时间的计算非常频繁,因此了解这些类的用法非常重要。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中Date,Calendar,Timestamp的区别以及相互转换与使用 - Python技术站

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

相关文章

  • 详谈表单重复提交的三种情况及解决方法

    下面是“详谈表单重复提交的三种情况及解决方法”的完整攻略: 1. 表单重复提交的三种情况 1.1 点击提交按钮多次 用户在提交表单后,可能会多次点击“提交”按钮。这种情况下,表单会被重复提交。 1.2 网络延时导致重复提交 在网络较慢的情况下,用户提交表单后等待太久,以至于以为提交没有成功而重新提交。这种情况下,表单也会被重复提交。 1.3 刷新页面导致重复…

    Java 2023年6月15日
    00
  • 一文详解kafka序列化器和拦截器

    下面我将详细讲解“一文详解kafka序列化器和拦截器”的完整攻略。 1. 什么是Kafka序列化器? Kafka序列化器的作用是将对象序列化(编码)成字节流,以便于在Kafka集群中的各个节点之间进行传输。Kafka序列化器是Kafka生产者客户端使用的一种功能,可以将Key和Value序列化为字节数组并将其发送到Kafka broker上。Kafka提供了…

    Java 2023年5月20日
    00
  • 纯javascript实现分页(两种方法)

    下面我将详细讲解“纯javascript实现分页(两种方法)”的完整攻略。 1. 分页的基本概念 在讲解具体实现方法前,我们先来了解一下分页的基本概念。分页是一种常见的数据展示方式,将大量数据分为若干页进行展示,避免一次性展示大量数据造成页面加载缓慢、卡顿等问题。常见的分页组件会显示页码、上一页、下一页等按钮,用户点击按钮即可进行翻页操作。 2. 方法一:手…

    Java 2023年6月15日
    00
  • @Controller、@RestController注解区别详解

    下面是关于“@Controller、@RestController注解区别详解”的完整攻略。 一、@Controller注解 @Controller是SpringMVC中常用的控制器注解,用于标记此类为控制器,能够处理用户的请求并返回相应的数据。 1.1 示例代码 @Controller @RequestMapping("/hello")…

    Java 2023年6月15日
    00
  • Java实现创建运行时类的对象操作示例

    创建运行时类的对象是一个非常常见且必须的操作,下面我将为您提供实现此操作的详细攻略,包括Java中的示例代码。 1. 了解Class类 在 Java 语言中,每一个类都会对应一个 Class 类的实例,这个实例包含了有关该类的信息,我们可以通过这个实例对该类进行操作。因此,了解 Class 类是实现创建运行时类的对象的第一步。 我们可以使用以下三种方式来获取…

    Java 2023年5月26日
    00
  • Spring依赖注入的几种方式分享梳理总结

    Spring依赖注入的几种方式分享梳理总结 什么是依赖注入(Dependency Injection,DI) 简单来说,依赖注入就是将对象所依赖的其他对象注入到其内部。这样可以达到解耦的效果,提高代码的可维护性。 通常,依赖注入需要依赖容器完成,目前比较常用的容器有Spring、Guice等。 Spring依赖注入的几种方式 1.构造注入(Construct…

    Java 2023年5月19日
    00
  • Java异常(Exception)处理以及常见异常总结

    关于Java异常处理以及常见异常总结的攻略共分为以下几个部分: 异常概念 Java异常分类 异常处理 常见异常总结 示例说明 1. 异常概念 Java异常是在程序执行期间出现的错误或异常情况。异常在程序执行过程中会中断程序的正常执行,并且在出现问题的位置抛出异常信息。一个方法如果没有特殊处理异常的机制,当出现异常时会使程序崩溃。 2. Java异常分类 Ja…

    Java 2023年5月26日
    00
  • Java中线程安全有哪些实现思路

    Java中线程安全是多线程编程中非常重要的概念,因为线程安全的代码能够保证多个线程同时访问同一个共享变量时不会出现竞态条件等问题。下面是Java中线程安全的实现思路: 1. 使用synchronized关键字 synchronized是Java中最基本的实现线程安全的方式,用synchronized关键字修饰方法或代码块,表示只有一个线程可以进入该代码块或方…

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