javaSE的Date日期操作类

说到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对象就是我们设置好的时间格式哦,


猜你喜欢

转载自blog.csdn.net/qq_40550973/article/details/80579200
今日推荐