zoukankan      html  css  js  c++  java
  • Java学习关于时间操作的应用类--Date类、Calendar类及其子类

    Date类

      Date类封装了当期时间和日期。与Java1.0定义的原始版的Date类相比,Date类发生了本质的变化。在Java1.1发布时,原始版Date类定义的许多功能被移进Calendar类和DateFormat类中。原始版Date类中的许多方法已经不赞成使用。

      Date类支持的构造函数:

      Date()

      Date(long   millisec)

      第一个构造函数使用当前日期和时间初始化对象。第二个构造函数接收一个参数,该参数等于自1970年1月1日午夜以来经历的毫秒数。

    Date对象创建以后,可以调用下面的方法。

    序号方法和描述
    1 boolean after(Date date)
    若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
    2 boolean before(Date date)
    若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
    3 Object clone( )
    返回此对象的副本。
    4 int compareTo(Date date)
    比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
    5 int compareTo(Object obj)
    若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
    6 boolean equals(Object date)
    当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
    7 long getTime( )
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
    8 int hashCode( )
     返回此对象的哈希码值。
    9 void setTime(long time)
     
    用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
    10 String toString( )
    转换Date对象为String表示形式,并返回该字符串。

    日期比较

    Java使用以下三种方法来比较两个日期:

    • 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
    • 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
    • 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

    使用 SimpleDateFormat 格式化日期

    SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。

        import java.text.SimpleDateFormat;
        import java.util.Calendar;
        import java.util.Date;

        public class Calendartest {
        public static void main(String[] args) {

        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = new Date();
        System.out.println(ft.format(d));

         }

    日期和时间的格式化编码

    时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

    字母描述示例
    G 纪元标记 AD
    y 四位年份 2001
    M 月份 July or 07
    d 一个月的日期 10
    h  A.M./P.M. (1~12)格式小时 12
    H 一天中的小时 (0~23) 22
    m 分钟数 30
    s 秒数 55
    S 毫秒数 234
    E 星期几 Tuesday
    D 一年中的日子 360
    F 一个月中第几周的周几 2 (second Wed. in July)
    w 一年中第几周 40
    W 一个月中第几周 1
    a A.M./P.M. 标记 PM
    k 一天中的小时(1~24) 24
    K  A.M./P.M. (0~11)格式小时 10
    z 时区 Eastern Standard Time
    ' 文字定界符 Delimiter
    " 单引号

    Calendar类

      Calendar抽象类提供一套方法,允许将毫秒数形式的时间转化成大量有用的时间组成部分。例如年、月、日、小时、分和秒。Calendar类没有提供公有的构造函数,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

    创建一个代表系统当前日期的Calendar对象

    Calendar c = Calendar.getInstance();//默认是当前日期

    创建一个指定日期的Calendar对象

    使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

    //创建一个代表2009年6月12日的Calendar对象
    Calendar c1 = Calendar.getInstance();
    c1.set(2009, 6 - 1, 12);

    Calendar类对象字段类型

    Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想

    常量描述
    Calendar.YEAR 年份
    Calendar.MONTH 月份
    Calendar.DATE 日期
    Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
    Calendar.HOUR 12小时制的小时
    Calendar.HOUR_OF_DAY 24小时制的小时
    Calendar.MINUTE 分钟
    Calendar.SECOND
    Calendar.DAY_OF_WEEK 星期几

     

    Calendar类对象信息的获得

    Calendar c1 = Calendar.getInstance();
    // 获得年份
    int year = c1.get(Calendar.YEAR);
    // 获得月份
    int month = c1.get(Calendar.MONTH) + 1;
    // 获得日期
    int date = c1.get(Calendar.DATE);
    // 获得小时
    int hour = c1.get(Calendar.HOUR_OF_DAY);
    // 获得分钟
    int minute = c1.get(Calendar.MINUTE);
    // 获得秒
    int second = c1.get(Calendar.SECOND);
    // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
    int day = c1.get(Calendar.DAY_OF_WEEK);
     
  • 相关阅读:
    mysql存儲過程+游標的應用實例5/17
    mysql存儲過程+遊標應用之:找缺號5/19
    轉:愚公移山
    c++中的头文件
    栈和堆:生存空间
    java中的类加载
    c++中的连接
    访问static变量和方法
    子类调用构造函数的过程
    c++中变量的存储种类
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7223709.html
Copyright © 2011-2022 走看看