一:时间的相关知识
全世界的时间有一个统一的计算标准,地球有经纬线之分,绕太阳一圈为1年,地球自转为一天。在同一条经线上的时间是一样的,全世界有24个时区。
在本初子午线的右侧一直到东12区,称为东部地区,它是在标准时间上增加时间,即我国在东八区,则在标准时间上加8个小时。
在本初子午线的左侧以及东12区的右边为西部地区。在标准时间上减少时间。
二:世界时间的使用标准
在2012年之前,世界上使用的是格林尼治或者格林威治时间。简称GMT。它的计算核心为:地球自转一天是24个小时,太阳直射点时间为正午12点。这样计算的时间误差太大。
在2012年,以原子钟作为世界的标准时间(UTC)。
原子钟:利用铯原子钟的震动的频率计算出来的时间,作为世界的标准时间,振动9,192,631,770次等于1秒。
三:Date时间类
1. Date类是一个JDK已经写好了的javabean类,用来描述时间,精确到毫秒。
- 利用空参构造创建对象,默认表示系统当前时间。
- 利用有参构造创建对象,表示指定时间。
举例截图如下:
运行结果截图如下:
从上面可以看出,第一个获取的是默认的时间,即为打印时刻的时间,第二个是指定的时间,即为计算机原点时间1970年1月1日。
2.Date常用的方法
public void setTime(long time) 设置/修改毫秒值
public long getTime() 获取时间对象的毫秒值
举例截图如下:
运行结果截图如下:
从上面可以看出,第一个打印的是默认的时间,第二个是利用set方法所打印的时间。第三个是利用get的方法获取修改时间后的毫秒值。
四:利用Date实现两个需求
需求1:打印时间原点三年后的时间
截图如下:
需求2:定义任意3个Date对象,比较一下哪个时间在最后
截图如下:
多运行几次看结果:
发现每次结果都不同,说明判断正确。
案例所有代码如下:
public static void main(String[] args) {
//利用空参构造创建对象,获取默认的时间
//System.out.println(new Date());
//利用有参构造创建对象,获取指定的时间
//System.out.println(new Date(0L));
//1.创建时间对象
Date d1 = new Date();
//打印时间
System.out.println(d1);
//利用set方法区修改时间
d1.setTime(2000L);
//2.再次打印时间
System.out.println(d1);
//3.利用get方法获取是间的毫秒值
long l = d1.getTime();
//在main方法中调用书写的方法
System.out.println(getTime());
System.out.println("-----------------------------");
//需求2:定义任意3个Date对象,比较一下哪个时间在最后
//1.获取随机数
Random r = new Random();
//2,创建三个时间对象
Date d3 = new Date(Math.abs(r.nextInt()));
Date d4 = new Date(Math.abs(r.nextInt()));
Date d5 = new Date(Math.abs(r.nextInt()));
//3.利用get方法获取时间的毫秒值
long time3 = d3.getTime();
long time4 = d4.getTime();
long time5 = d5.getTime();
//4.利用判断语句时间的先后顺序
if (time3 > time4 && time3 > time5) {
System.out.println("time3时间在最后");
} else if (time4 > time3 && time4 > time5) {
System.out.println("time4 时间在最后");
} else if (time5 > time3 && time5 > time3) {
System.out.println("time5时间在最后");
}
}
//定义一个方法来实现需求1
private static Date getTime() {
//需求1:打印时间原点三年后的时间
//1.创建一个对象,表是时间原点
Date d2 = new Date();
//2.得到时间原点对应的时间毫秒值
long time2 = d2.getTime();
//3.在时间原点对应的毫秒值上在加上3年的毫秒值
time2 = time2 + 3 * 365 * 24 * 60 * 60 * 1000L;
//4.再将计算之后的时间毫秒值设置回d2当中
d2.setTime(time2);
//打印设置之后的时间
//System.out.println(d2);
return d2;
}
}