说到Date日期操作类,里面的大部分方法都已经是划了横线的了,划横线就是过时的方法,不建议使用了。
首先我们要了解的是,正真获得时间的方法是:System.currentTimeMillis( );这个方法,返回的是long类型的时间格式。
然后我们再来看看Date这个类的构造器方法参数:
可以看到,除了空参数构造器和long类型的构造器,其他都画横线了。
然而我们再进入空参数的构造器去看看它的真实面目:
发现,原来它的空构造器就是使用 System.currentTimeMillis( );这个方法去获得时间的,然后再转发给long参数的构造器。
意思就是,要么你传一个long类型的时间给它,要么它自己通过System.currentTimeMillis( );方法去获得long类型时间。
我们再来看看Date对象里面的get···方法:
可以看到基本上都是划横线的了,它的getTime()方法是没有划横线的,是获得long的时间。本人觉得,如果通过Date去获得一个long类型的时间,那还不如直接通过System.currentTimeMillis( );这个方法去获得,何必去绕一个圈,还要new一个Date对象····
再来看看Date的其他方法:
setTime( ); 设置时间的方法,传参数类型是long类型。
你可以在构造器给它long类型时间,也可以用setTime( ); 这个方法设置时间。
compareTo( );时间的比较方法,传参类型是Date类型。
如果它大于传进来的Date参数,返回1,小于的话就返回-1,等于则返回0;
看看源码的真面目,你会发现,,这么简单···
是的,这就是compareTo( )方法。
after( )方法:
从方法名上就可以知道,这个也是比较方法了。单词意思是之后的意思。
传入参数也是Date类型的,返回值是true和false。
如果它在传入参数Date之后,返回true,否则返回false;
有点像是询问的意思,请问一下我这个时间是不是在你传进来的时间之后呀,如果是就说true,不是就说false;
来看看这个方法的源码:
---------------------------------------
before( ); 这个方法也是一样的,反之亦然,这个是之前的意思,
请问一下我这个时间是不是在你传进来的时间之前呀,如果是就说true,不是就说false;
看看源码:
需要注意的是:after( )方法和before( )方法,在如果等于传进来的Date时,也是返回false哦!
---------------------------------------
toString();再来看一个,Date的toString方法:
public String toString() { // "EEE MMM dd HH:mm:ss zzz yyyy"; BaseCalendar.Date date = normalize(); StringBuilder sb = new StringBuilder(28); int index = date.getDayOfWeek(); if (index == BaseCalendar.SUNDAY) { index = 8; } convertToAbbr(sb, wtb[index]).append(' '); // EEE convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' '); // MMM CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':'); // HH CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss TimeZone zi = date.getZone(); if (zi != null) { sb.append(zi.getDisplayName(date.isDaylightTime(), TimeZone.SHORT, Locale.US)); // zzz } else { sb.append("GMT"); } sb.append(' ').append(date.getYear()); // yyyy return sb.toString(); }
这个Date的toString方法的源码。
我们是不是可以通过重写它的toString方法来达到我们想要的格式?(纯属玩玩)
写个MyDate类 继承与Date,然后重写toString方法
然后我们直接打印Date对象就是我们设置好的时间格式哦,