码迷,mamicode.com
首页 > 编程语言 > 详细

Java 基本日期类使用(一)

时间:2014-10-16 10:52:02      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   使用   ar   

一、java.util.Date

  Date表示特定的瞬间,精确到毫秒,其子类有Date、Time、Timestap。默认情况下输出的Date对象为:Mon Oct 13 17:48:47 CST 2014,一般不是我们想要的,我们可以调用Date的一些方法来获取我们想要的日期格式,但是遗憾的是Date类中的大多数方法都已经废弃,如图1所示:

bubuko.com,布布扣

图 1  Date过期方法图

  其中,public boolean after(Date when):测试此日期是否在指定日期之后-->当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间晚,才返回 true;否则返回 false

       public boolean before(Date when):测试此日期是否在指定日期之前-->当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间早,才返回 true;否则返回 false。

       public int compareTo(Date anotherDate):如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。

       public boolean equals(Object obj):当且仅当参数不为 null,并且是一个表示与此对象相同的时间点(到毫秒)的 Date 对象时,结果才为 true

  示例1:

    public static void main(String[] args) {
        //Date(long date) date即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数
        Date firstDate = new Date(125);
        //无参构造器,返回当前时间,精确到毫秒
        Date secondDate = new Date();
        int order = firstDate.compareTo(secondDate);
        String str = "";
        if (order == 0) {
            str = "相同";
        } else {
            str = order > 0 ? "firstDate在后" : "secondDate在后";
        }
        System.out.println(firstDate + "\t" + secondDate);
        System.out.println("firstDate 是否在secondDate之后:\t"+ firstDate.after(secondDate));
        System.out.println("firstDate 是否在secondDate之前:\t"+ firstDate.before(secondDate));
        System.out.println("firstDate 和 secondDate日期的顺序:\t"+ str);
        System.out.println("firstDate 和 secondDate是否相等:\t"+ firstDate.equals(secondDate));
    }

  结果1:

Thu Jan 01 08:00:00 CST 1970    Mon Oct 13 18:33:33 CST 2014
firstDate 是否在secondDate之后:    false
firstDate 是否在secondDate之前:    true
firstDate 和 secondDate日期的顺序:    secondDate在后
firstDate 和 secondDate是否相等:    false

  示例2:

      Date firstDate = new Date(System.currentTimeMillis());
        // 无参构造器,返回当前时间,精确到毫秒
        Date secondDate = new Date();
        System.out.println(firstDate.getTime() + "\t" + secondDate.getTime());
        System.out.println("firstDate 和 secondDate是否相等:\t" + firstDate.equals(secondDate));

  结果2:

1413199559364    1413199559364    #getTime()值相等则两个Date对象的equals比值为true
firstDate 和 secondDate是否相等:    true

二、java.sql.Date

  java.sql.Date是java.util.Date的子类,其自带方法中只有setTime(long date)、valueOf(String s)、toString()未过时。其中,toString方法输出的日期格式为:yyyy-mm-dd格式。valueOf(String s)将 JDBC 日期转义形式的字符串转换成 Date 值,s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象。

  示例:

public static void main(String[] args) {
        java.sql.Date date =  new java.sql.Date(System.currentTimeMillis());
        System.out.println(date);
        date.setTime(2222222222222L);
        System.out.println(date);
        java.sql.Date date1 = java.sql.Date.valueOf("2014-12-12"); //形参必须是:"yyyy-mm-dd"格式:
        System.out.println(date1);
    }

  结果:

2014-10-13
2040-06-02
2014-12-12

三、Timestamp

  java.sql.Timestamp在Date的基础上衍生出public void setNanos(int n)方法,以获取Timestamp 对象的小数秒组件。

  示例:

Timestamp timestamp = Timestamp.valueOf("2014-10-12 12:12:12.123");
// timestamp.getNanos()的值为:123000000
Timestamp timestamp2 = Timestamp.valueOf("2014-10-12 12:12:12");
// timestamp.getNanos()的值为:0

  需要注意的是TimestamptoString返回格式为:yyyy-mm-dd hh:mm:ss.fffffffff

  示例:

public static void main(String[] args) {
        // 获取系统当前时间
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        System.out.println(timestamp);
        //使用 yyyy-mm-dd hh:mm:ss.fffffffff 格式的 String 对象。最后ffffff的可以不要
        // timestamp2.getNanos()的值为:123000000
        Timestamp timestamp2 = Timestamp.valueOf("2014-10-12 12:12:12.123");
        System.out.println(timestamp2);
        System.out.println(timestamp2.getNanos());
    }

  结果:

2014-10-13 19:15:48.757
2014-10-12 12:12:12.123
123000000

 四、java.util.Calendar

  java.util.Calendar 是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

  Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。CalendargetInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();可以通过get()方法获取年月日、时分秒。

  示例:

public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();
        getyyyyMMdd(calendar);
        calendar.set(Calendar.YEAR, 2016);  // 设置年份为2016年
        calendar.set(Calendar.DAY_OF_MONTH, 30);  // 设置为30号
        getyyyyMMdd(calendar);
        calendar.add(Calendar.YEAR, 2);    // 在原有年份上加上2年,实际应用中可用户查询今年、明年等
        calendar.add(Calendar.MONTH, 2);    // 在原有月份上加上2
        getyyyyMMdd(calendar);
      
    }
    public static void getyyyyMMdd(Calendar calendar){
        System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE)+ ":" + calendar.get(Calendar.SECOND) );
        
    }

  结果:

2014-10-16 9:3:49
2016-10-30 9:3:49
2018-12-30 9:3:49

 

Java 基本日期类使用(一)

标签:des   style   blog   http   color   io   os   使用   ar   

原文地址:http://www.cnblogs.com/Richard-xie/p/4022887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!