时间、时区、时间戳
最近遇到转换时间戳的需求,本篇记录时间、时区、时间戳等概念,并提供一个初级的换算工具类。
说明
时间戳是一个很神奇的东西,地球上任何一个位置,此时此刻,时间戳都是一致的,然而时间就不一样了,东八区早上九点的时候,伦敦0区是当天凌晨一点,在跨越了日期线的时区,连日期都会不一致。而我们的项目提供给全球客户,因此,使用时间戳就很有必要了。
Unix时间戳,长度是10位数字。但是在安卓里获取到的当前时间戳会有13位,用时间戳来设置当前时间的时候也需要是13位。
(安卓有一个设置系统时间的方法,代码如下,传一个13位的时间戳进去)
SystemClock.setCurrentTimeMillis(timestamp);
代码
转换的工具类代码如下。是写给安卓测试的,但其实用的都是标准Java接口。
package com.point.pointutils;
import java.text.DateFormat;
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));
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 point_1024@163.com
文章标题:时间、时区、时间戳
本文作者:Point Tang
发布时间:2019-01-07, 18:51:40
最后更新:2019-12-13, 10:48:39
原始链接:http://pointtang.github.io/2019/01/07/%E6%97%B6%E9%97%B4%E3%80%81%E6%97%B6%E5%8C%BA%E3%80%81%E6%97%B6%E9%97%B4%E6%88%B3/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。