用java代码写一个工具类,将10位或13位的时间戳都转化为10位的时间戳
时间: 2024-03-08 22:48:25 浏览: 51
可以使用Java中的Date类和SimpleDateFormat类来实现时间戳的转换。
以下是将10位或13位时间戳转换为10位时间戳的工具类:
```java
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeStampUtils {
/**
* 将10位或13位时间戳转换为10位时间戳
* @param timestamp 时间戳
* @return 返回10位时间戳
*/
public static long convertTo10Timestamp(long timestamp) {
if (String.valueOf(timestamp).length() == 13) {
timestamp = timestamp / 1000;
}
return timestamp;
}
/**
* 将带有单位的时间戳字符串转换为10位时间戳
* @param timestampStr 时间戳字符串,可以是10位或13位时间戳,也可以是带有单位的时间戳字符串,如:"2021-01-01 00:00:00"、"2021-01-01 00:00:00.000"、"2021/01/01 00:00:00"、"2021/01/01 00:00:00.000"
* @return 返回10位时间戳
*/
public static long convertTo10Timestamp(String timestampStr) {
long timestamp = 0;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(timestampStr);
timestamp = date.getTime() / 1000;
} catch (Exception e) {
e.printStackTrace();
}
return timestamp;
}
}
```
使用示例:
```java
public class Test {
public static void main(String[] args) {
long timestamp1 = 1610457600; // 10位时间戳
long timestamp2 = 1610457600000L; // 13位时间戳
String timestamp3 = "2021-01-13 00:00:00"; // 带有单位的时间戳字符串
long timestamp4 = TimeStampUtils.convertTo10Timestamp(timestamp1);
long timestamp5 = TimeStampUtils.convertTo10Timestamp(timestamp2);
long timestamp6 = TimeStampUtils.convertTo10Timestamp(timestamp3);
System.out.println(timestamp4); // 输出:1610457600
System.out.println(timestamp5); // 输出:1610457600
System.out.println(timestamp6); // 输出:1609929600
}
}
```
注意:这里的时间戳是指从1970年1月1日 00:00:00开始所经过的秒数,10位时间戳是指10位数字组成的时间戳字符串,13位时间戳是指13位数字组成的时间戳字符串。在Java中,Date类的getTime()方法返回的是13位时间戳,需要除以1000才能得到10位时间戳。同时,SimpleDateFormat类可以将带有单位的时间戳字符串转换为Date对象,再调用Date对象的getTime()方法即可得到13位时间戳,需要除以1000才能得到10位时间戳。
阅读全文