时间、时区、时间戳

最近遇到转换时间戳的需求,本篇记录时间、时区、时间戳等概念,并提供一个初级的换算工具类。

时间戳是一个很神奇的东西,地球上任何一个位置,此时此刻,时间戳都是一致的,然而时间就不一样了,东八区早上九点的时候,伦敦0区是当天凌晨一点,在跨越了日期线的时区,连日期都会不一致。而我们的项目提供给全球客户,因此,使用时间戳就很有必要了。

Unix时间戳,长度是10位数字。但是在安卓里获取到的当前时间戳会有13位,用时间戳来设置当前时间的时候也需要是13位。

(安卓有一个设置系统时间的方法,代码如下,传一个13位的时间戳进去)

1
SystemClock.setCurrentTimeMillis(timestamp);

代码

转换的工具类代码如下。是写给安卓测试的,但其实用的都是标准Java接口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.point.pointutils;

import java.text.DateForm 大专栏  时间、时区、时间戳at;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
* Created by Point on 2019/1/7.
*/

public class TimeUtils {

/**
* 获取当前系统显示的时间,格式为 2019-01-07 14:00:00
* @return 当前系统显示的时间
*/
public static String getLocalTime(){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
return format.format(new Date());
}

/**
* 获取当前系统设置的时区
* @return
*/
public static String getTimeZone(){
return TimeZone.getDefault().getID();
}

/**
* 将指定时区的指定时间转换为Unix时间戳
* @param time 待转换的时间
* @param timezone 待转换的时间的时区
* @return Unix时间戳
*/
public static String getTimeStamp(String time, String timezone){
String timestamp = "";
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone(timezone));
try {
Date date = format.parse(time);
timestamp = format.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return timestamp;
}

/**
* 将指定时间戳转换成指定时区的时间
* @param timestamp 待转换的时间戳,10位数字
* @param timezone 指定时区的ZoneID,可用TimeZone.getAvailableIDs()查询,建议使用本机时区
* @return 转换后的时间
*/
public static String getTime(String timestamp, String timezone){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(TimeZone.getTimeZone(timezone));
return format.format(new Date(Long.parseLong(timestamp)*1000));
}


}

猜你喜欢

转载自www.cnblogs.com/liuzhongrong/p/12000090.html