日期时间是Java一个重要的数据类型,常见的日期时间格式通常为“yyyy-MM-dd HH:mm:ss”,但是计算机中存储的日期时间并非字符串形式,而是长整型的时间戳。因为字符串又占用空间又难以运算,相比之下,长整型只占用四个字节,普通的加减乘除运算更是不在话下,所以时间戳是最佳的日期时间存储方案。
获取时间戳的代码很简单,只需调用System类的currentTimeMillis方法即可,如下所示:
// 从System类获取当前的时间戳
long timeFromSystem = System.currentTimeMillis();
System.out.println("timeFromSystem="+timeFromSystem);
众所周知,时间戳以毫秒为单位,为了求得它的计时起点,可以将其转换时间单位,先把毫秒的数量转成秒的数量,再把秒的数量转成分钟的数量,再把分钟的数量转成小时的数量,再把小时的数量转成天的数量,最后把天的数量转成年的数量。不过每年的天数不固定,像平年有365天,闰年有366天,按照四年一闰,平均每年的天数=(365+365+365+366)/4=365.25。于是把时间戳转为年份数量的代码就成了下面这样:
int years = (int) (timeFromSystem/1000/60/60/24/365.25);
System.out.println("years="+years);
运行上述转换代码,可见如下的输出日志: