一、什么是时间戳
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中时间戳的概念和相关的转换方法,包括将时间戳转换为日期字符串、将日期字符串转换为时间戳、时区间的转换等。开发人员可以根据自身需求进行相应的调整和变化。