Java中常用的时间类

  • java.util.Date

这个方法类中的方法除过getTime()方法都被标记为了过时。

  • java.sql.Date

他继承与java.util.Date类,这个类与Date类相似,其中的许多方法都已经过时,过时的方法被标记为了@Deprecated,其中三个参数的构造函数就是,一个参数的构造函数中的date表示的是一个时间戳,这个类中的方法主要是用在SQL相关的操作中的:

Java中常用的时间类_第1张图片

java.sql中常用的方法的代码示例:

Date sqlNowDate = new java.sql.Date(System.currentTimeMillis());
		//1588042565000  2020-04-28 10:56:05
		Date sqlOldDate = new java.sql.Date(selfDefinedCalendar.getTimeInMillis());

		//判断时间的先后顺序
		//after:如果SQLNowDate在SQLOldDate之后则为真
		System.out.println("时间先后顺序的一个比较"+sqlNowDate.after(sqlOldDate));
		//before:如果sqlNowDate在SQLOldDate之前则为真
		System.out.println("时间先后顺序的一个比较"+sqlNowDate.before(sqlOldDate));
		//toString()方法的使用
		System.out.println("toString方法的使用:"+sqlNowDate.toString());
		//valueOf()方法用来将一定形式的字符串转换为一个固定时间的时间对象
		Date stringDate = Date.valueOf("2020-07-03");
		System.out.println("stringDate对象中的时间"+stringDate.getDate());
		//toLocalDate得到的结果是:2020-07-03
		System.out.println("toLocalDate()方法:  "+sqlNowDate.toLocalDate());

我们通过value中常量的设置中可以看出,传入的字符应该是表示年月日,即只有日期没有时间:

Java中常用的时间类_第2张图片

 有关toString()方法的实现,其中用到了java.lang.Character类中的forDigit方法,个人感觉这种数据处理的形式指的借鉴所以在这里就贴出了JDK中相关实现的一个源码:

Java中常用的时间类_第3张图片

  • java.util.Calendar

Calendar是目前项目开发中最经常使用的一个工具类,创建Calendar类的方式有两种:

Calendar gc = Calendar.getInstance();
GregorianCalendar gc2 = new GregorianCalendar();

Calendar是一个抽象类他的创建时通过工厂模式来创建的,通过new的方式直接来进行创建的GregorianCalendar相当于是Calendar这个抽象类的一个具体实现类,可以直接通过new的方式来进行创建。

Java中常用的时间类_第4张图片

 类中常用的几个方法如下所示:

Java中常用的时间类_第5张图片

 原来做项目的时候有一个字段是用来记录一个操作发生时的系统时间,当初感觉直接通过getTimeInMillis()获取的话字符串还是太长数字太大,在这里采用了通过重载GregorianCalendar自定义一个类,当然也可以通过设置一个固定时间的时间对象这个对象会获得一个纪元时间到这个时间点getTimeInMillis()的值,通过这个值做一些我们系统业务逻辑中需要的操作:

public class CalendarClassTest {

	//自定义一个时间点
	static Calendar  selfDefinedCalendar = new GregorianCalendar();
	//正常的系统时间
	static Calendar systemCalendar1 = new GregorianCalendar();
	static Calendar systemCalendar2 = new GregorianCalendar();
	//重载GregorianCalendar自定义的一个时间工具类
	static Calendar utilsCalendar = new CalendarSon();
	public static void main(String[] args) {
		//对于getTimeInMillis应用的一些测试
		selfDefinedCalendar.set(2020,06,02,00,00,00);
		System.out.println("自定义的时间为:"+utilsCalendar.getTimeInMillis());
		System.out.println("正常系统时间: "+systemCalendar1.getTimeInMillis()+"  自定义时间工具类:  "+utilsCalendar.getTimeInMillis());
		System.out.println("两个GregorianCalendar对象的差值"+(systemCalendar1.getTimeInMillis()-systemCalendar2.getTimeInMillis()));
	}

}

 当我们使用Calendar这个类的时候,要注意系统的月份时间的设置实际上是0~11月,所以在我通过set设置固定时间的时候设置7月我填的值是6。set()方法是一个重载的方法,根据我们的需要,可以传进去不同的参数。

//对上一级的时间段是有影响的
systemCalendar1.add(Calendar.DATE ,-39);
System.out.println("使用add方法,当前时间的39天前是: "+(systemCalendar1.get(Calendar.MONTH)+1)+"月"+systemCalendar1.get(Calendar.DAY_OF_MONTH)+"日");
//对上一级的时间段是没有影响的
systemCalendar2.roll(Calendar.DATE,90);
System.out.println("使用roll方法,当前时间90天后: "+(systemCalendar2.get(Calendar.MONTH)+1)+"月"+systemCalendar2.get(Calendar.DAY_OF_MONTH)+"日");

 getTime方法的使用:

//使用getTime()方法返回的是java.util.Date对象
System.out.println(systemCalendar1.getTime().getClass().getName());
System.out.println(systemCalendar1.getTime());

 JDK的源码中我们可以看到,getTime()方法是创建了一个Date 方法并且返回:

Java中常用的时间类_第6张图片

  • java.time.*

 

 

你可能感兴趣的:(java高阶)