Java时间戳转换

时间戳是一种表示时间的方式,它表示从1970年1月1日00:00:00到当前时间的秒数。在Java中,我们经常需要将这种时间戳转换成具体的日期和时间,或将日期和时间转换成时间戳。本文将详细介绍如何在Java中进行时间戳转换。

一、将时间戳转换成日期和时间

Java中可以使用Date类来表示具体的日期和时间,我们可以使用new Date(timestamp)方法将时间戳转换成Date对象,其中timestamp为要转换的时间戳。

示例代码如下:

long timestamp = System.currentTimeMillis(); //获取当前时间戳
Date date = new Date(timestamp); //将时间戳转换成Date对象
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置日期格式
String datetime = dateFormat.format(date); //将Date对象格式化成字符串
System.out.println(datetime); //输出格式化后的日期和时间

在上述示例代码中,我们首先通过System.currentTimeMillis()方法获取当前时间戳,然后将其转换成Date对象,接着使用SimpleDateFormat类设置日期和时间的格式,最后将Date对象格式化成字符串并输出。

输出结果如下:

2021-05-24 18:20:43

二、将日期和时间转换成时间戳

与将时间戳转换成日期和时间相反,将日期和时间转换成时间戳需要使用System.currentTimeMillis()方法,该方法可以获取当前系统的时间戳。

示例代码如下:

String datetime = "2021-05-24 18:20:43"; //要转换的日期和时间
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //设置日期格式
Date date = dateFormat.parse(datetime); //将字符串解析成Date对象
long timestamp = date.getTime(); //将Date对象转换成时间戳
System.out.println(timestamp); //输出时间戳

在上述示例代码中,我们首先定义要转换的日期和时间,然后设置日期和时间的格式,接着使用SimpleDateFormat类将字符串解析成Date对象,最后将Date对象转换成时间戳并输出。

输出结果如下:

1621854043000

三、将时间戳转换成本地时间

默认情况下,Java会将时间戳转换成UTC时间,而不是本地时间。如果需要将时间戳转换成本地时间,可以使用Calendar.getInstance()方法获取Calendar对象,并调用setTimeInMillis(timestamp)方法将时间戳设置到Calendar对象中,然后调用get()方法获取年、月、日、时、分、秒等属性值。

示例代码如下:

long timestamp = System.currentTimeMillis(); //获取当前时间戳
Calendar calendar = Calendar.getInstance(); //获取Calendar对象
calendar.setTimeInMillis(timestamp); //将时间戳设置到Calendar对象中
int year = calendar.get(Calendar.YEAR); //获取年份
int month = calendar.get(Calendar.MONTH) + 1; //获取月份(需要加1)
int day = calendar.get(Calendar.DAY_OF_MONTH); //获取日
int hour = calendar.get(Calendar.HOUR_OF_DAY); //获取小时
int minute = calendar.get(Calendar.MINUTE); //获取分钟
int second = calendar.get(Calendar.SECOND); //获取秒钟
System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second); //输出本地时间

在上述示例代码中,我们首先获取当前时间戳,然后使用Calendar.getInstance()方法获取Calendar对象,将时间戳设置到Calendar对象中,最后使用get()方法获取年、月、日、时、分、秒等属性值。

输出结果如下:

2021-5-24 18:20:43

四、本文代码示例

本文中所示的完整的代码示例如下:

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

public class TimeUtils {

    //将时间戳转换成日期和时间
    public static String timestampToDate(long timestamp) {
        Date date = new Date(timestamp);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return dateFormat.format(date);
    }

    //将日期和时间转换成时间戳
    public static long dateToTimestamp(String datetime) throws Exception {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = dateFormat.parse(datetime);
        return date.getTime();
    }

    //将时间戳转换成本地时间
    public static String timestampToLocalTime(long timestamp) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(timestamp);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
    }

    //测试代码
    public static void main(String[] args) throws Exception {
        long timestamp = System.currentTimeMillis();
        String datetime = timestampToDate(timestamp);
        System.out.println("时间戳转换成日期和时间:" + datetime);
        long newTimestamp = dateToTimestamp(datetime);
        System.out.println("日期和时间转换成时间戳:" + newTimestamp);
        String localTime = timestampToLocalTime(timestamp);
        System.out.println("时间戳转换成本地时间:" + localTime);
    }
}

在本文中,我们使用TimeUtils类封装了时间戳转换的功能,并使用main()方法进行测试。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/248359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:27
下一篇 2024-12-12 13:27

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论