您的位置:

Java时间戳转时间

一、什么是时间戳

Unix时间戳即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。它是一种时间表示方式,可以用于记录时间、计算时间等。Java中的时间戳指的是自1970年1月1日起经过的毫秒数,以long类型值返回。

时间戳常用于跨时区的时间记录和标志。例如,某个服务器根据自己的时间戳记录某个事件的时间数据,下一次更新时读取另一台服务器的时间戳,可以很容易的将两者时间数据进行同步。

二、Java时间戳的转换方法

将Java的时间戳转换为具体的日期时间,一般需要使用到DateFormat和SimpleDateFormat类。以下是一个转换示例:

    public static String formatTimeStamp(Long timestamp){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(timestamp);
    }

以上代码将一个Long类型的时间戳转化为"yyyy-MM-dd HH:mm:ss"格式的字符串,可以直接输出。

除了以上的时间格式,SimpleDateFormat也支持更多的时间格式化方式:

格式代码 解释 示例
yyyy 年份 2019
MM 月份 01-12
dd 月中的日期 01-31
HH 小时(24小时制) 00-23
mm 分钟 00-59
ss 00-59

如果要将一个格式化后的日期字符串转换为时间戳,可以使用SimpleDateFormat和Date类的方法来完成:

    public static Long getTimeStamp(String timeStr) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(timeStr);
        return date.getTime();
    }

注意:需要在方法声明中添加throws ParseException抛出可能发生的异常

三、时区转换

由于不同的地区使用不同的时区,所以在进行时间转换时经常需要进行时区转换。以下是一个将GMT时间转换为北京时间的代码示例:

    public static String GMTToBJTime(Long timestamp){
        SimpleDateFormat bjSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        bjSdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        Date date = new Date(timestamp);
        return bjSdf.format(date);
    }

以上代码将时间戳以GMT时间的格式进行解析,然后根据指定时区"Asia/Shanghai"转换为北京时间。

四、总结

本文详细介绍了Java中时间戳的概念和相关的转换方法,包括将时间戳转换为日期字符串、将日期字符串转换为时间戳、时区间的转换等。开发人员可以根据自身需求进行相应的调整和变化。