时间戳是指格林威治时间『1970-01-01 00:00:00』即北京时间「1970-01-01 08:00:00」起至现在的总秒数。
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeStamp {
/**
** 获取当前时间戳(毫秒级)
*
* @return String 时间戳
*/
public String getTimestamp() {
long temp = System.currentTimeMillis();
String timestamp = String.valueOf(temp);
return timestamp;
}
/**
** 获取指定的时间对应的时间戳
*
* @param datetime 年月日 时:分:秒
* @return String 时间戳
*/
public String getTimestamp(String datetime) {
String timestamp = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
Date date = sdf.parse(datetime.trim());
long temp = date.getTime();
timestamp = String.valueOf(temp);
if (timestamp.length() > 3) {
timestamp = timestamp.substring(0, timestamp.length() - 3);
}
} catch (Exception e) {
// e.printStackTrace();
timestamp = "请输入正确的时间(比如 20010203 09:10:11)";
}
return timestamp;
}
/**
** 获取指定的时间戳对应的时间
*
* @param timestamp 时间戳
* @return String 年-月-日 时:分:秒
*/
public String getTime(String timestamp) {
String datetime = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long temp = Long.valueOf(timestamp.trim());
Date date = new Date(temp * 1000L);
datetime = sdf.format(date);
} catch (Exception e) {
// e.printStackTrace();
datetime = "请输入正确的时间戳(比如 1286755935)";
}
return datetime;
}
}
关于计算机的几种时间
# GMT
即:格林尼治时间(Greenwich Mean Time)
以本初子午线为基础,精确度相对低。
注意事项:因为地球每天的自转是不规则的(正在缓慢减速),所以,格林尼治时间的精确度会越来越低。
# UTC
即:世界协调时(Universal Time Coordinated)
以原子时钟长为基础,比GMT格林尼治时更加科学更加精确。
注意事项:1)目前UTC与GMT 相差为0.9秒,故二者可以基本视为一致。
我们一般认为GMT和UTC是一样的,都与英国伦敦的本地时相同。
2)早期的XP系统中,默认时间格式是GMT。Win7之后,默认时间格式已经改成了UTC。
# UNIX时间戳 (timestamp)
计算机中的UNIX时间戳,是以GMT/UTC时间「1970-01-01T00:00:00」为起点,到当前具体时间的秒数(不考虑闰秒)。这样做的目的,主要是通过“整数计算”来简化计算机对时间操作的复杂度。
无论何种编程语言,基本都有获取unix时间戳的系统方法。
注意事项:
1)如果开发的软件系统仅仅在国内用,用timestamp没有太大问题(因为大家的Linux服务器的时区是一样的)。
2)如果软件系统需要跨国服务,则必须用UTC(比如阿里云API),否则就会因为服务器的UTC时区不同,导致timestamp结果值混乱。