重点归纳(7)---日期和时间(1)

java.util.Date类
Date类可以精确到毫秒数,这个毫秒数是相对于格林威治标准时间“1970-01-01 00:00:00.000 GMT”的差值。

世界时间标准主要有UTC,即Coordinated Universal Time(中文名译作世界协调时间、世界统一时间或世界标准时间),以及GMT,即Greenwich Mean Time(中文名译作格林威治标准时间或格林威治平均时间)两种。严格来讲,UTC比GMT更加精确一些,不过它们的差值不会超过0.9秒,如果超过了,将会为UTC增加闰秒以与GMT,也就是地球自转周期保持一致。所以在日常使用中,我们可以把UTC和GMT一样看待。
日期和时间的表示是与我们所处的时区相关联的,如果我们不指定时区,那么它们将以系统默认的时区来显示。

Date类有很多个构造器方法,大部分已经不被赞成使用了(Deprecated),不过还剩下两个可以使用的:

public Date() {   
    this(System.currentTimeMillis());   
}   
  
public Date(long date) {   
    //other code   
}  
第一个是无参构造器,使用系统当前时间的毫秒数来创建Date对象,它调用了java.lang.System类的currentTimeMillis()来取得系统的当前时间的毫秒值。这是个本地方法,它的定义如下:

public static native long currentTimeMillis();  
第二个构造器是根据给定的毫秒数来创建一个与之对应的Date对象,这个毫秒数决定了被创建对象的年、月、日、时、分、秒属性的值。

“CST”标识,它是China Standard Time的缩写,指的是中国标准时间,也就是我们常说的北京时间。它与UTC的时差是UTC+8:00,就是说北京时间比世界标准时间早8个小时,如果世界标准时间是早上1点,北京时间就是早上9点。一般情况下我们不需要关心时区问题。

在创建完Date对象之后,我们可以通过调用getTime()方法来获得该对象的毫秒数值,调用setTime(long time)方法来设置它的毫秒数值,从而影响年、月、日、时、分、秒这些属性。



例1:

import java.util.Date;   
  
public class DateTest {   
    public static void main(String[] args) {   
        Date d = new Date();   
        // 在默认时区下输出日期和时间值   
        System.out.println(d);   
    }   
}  
运行结果:


Tue Jul 22 10:44:47 CST 2008
例2:

import java.util.Date;   
  
public class DateTest {   
    public static void main(String[] args) {   
        // 2008-08-08 20:00:00对应的毫秒数   
        long t2008 = 1218196800000L;   
        // 1900-01-01 20:00:00对应的毫秒数   
        long t1900 = -2208945952000L;   
  
        // 指定毫秒数创建Date对象   
        Date d2008 = new Date(t2008);   
        // 使用系统默认时间创建Date对象   
        Date d1900 = new Date();   
        // 通过设置毫秒数改变日期和时间   
        d1900.setTime(t1900);   
  
        System.out.println("调用方法:d1900.before(d2008)");   
        System.out   
                .print("比较结果:\"1900-01-01 20:00:00\"在\"2008-08-08 20:00:00\"");   
        // 使用before()方法比较   
        if (d1900.before(d2008)) {   
            System.out.println("之前");   
        } else {   
            System.out.println("之后");   
        }   
           
        System.out.println();   
           
        System.out.println("调用方法:d2008.after(d1900)");   
        System.out   
                .print("比较结果:\"2008-08-08 20:00:00\"在\"1900-01-01 20:00:00\"");   
        // 使用after()方法比较   
        if (d2008.after(d1900)) {   
            System.out.println("之后");   
        } else {   
            System.out.println("之前");   
        }   
           
        System.out.println();   
           
        System.out.println("调用方法:d1900.compareTo(d2008)");   
        System.out   
                .print("比较结果:\"1900-01-01 20:00:00\"在\"2008-08-08 20:00:00\"");   
        // 使用compareTo()方法比较   
        int i = d1900.compareTo(d2008);   
        if (i == -1) {   
            System.out.println("之前");   
        } else if (i == 1) {   
            System.out.println("之后");   
        } else if (i == 0) {   
            System.out.println("是同一时刻");   
        }   
    }   
}  
运行结果:


调用方法:d1900.before(d2008)
比较结果:"1900-01-01 20:00:00"在"2008-08-08 20:00:00"之前
调用方法:d2008.after(d1900)
比较结果:"2008-08-08 20:00:00"在"1900-01-01 20:00:00"之后
调用方法:d1900.compareTo(d2008)
比较结果:"1900-01-01 20:00:00"在"2008-08-08 20:00:00"之前

你可能感兴趣的:(日期)