zoukankan      html  css  js  c++  java
  • Java 时间相关

    java的时间主要关注这几个类,查看Java API 1.6

    java.util.Calendar

    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

    该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected

    与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。CalendargetInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:

         Calendar rightNow = Calendar.getInstance();

    Calendar 对象能够生成为特定语言和日历风格实现日期-时间格式化所需的所有日历字段值,例如,日语-格里高里历,日语-传统日历。Calendar 定义了某些日历字段返回值的范围,以及这些值的含义。例如,对于所有日历,日历系统第一个月的值是 MONTH == JANUARY。其他值是由具体子类(例如 ERA)定义的。有关此内容的细节,请参阅每个字段的文档和子类文档。 

    java.util.Date

    Date 表示特定的瞬间,精确到毫秒。 

    在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:

    • 年份 y 由整数 y - 1900 表示。
    • 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
    • 日期(一月中的某天)按通常方式由整数 1 至 31 表示。
    • 小时由从 0 至 23 的整数表示。因此,从午夜到 1 a.m. 的时间是 0 点,从中午到 1 p.m. 的时间是 12 点。
    • 分钟按通常方式由 0 至 59 的整数表示。
    • 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定

    java.util.TimeStamp

    TimeStamp 是Date的子类

    一个与 java.util.Date 类有关的瘦包装器 (thin wrapper),它允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQL TIMESTAMP 小数秒值的能力。Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。

    计算 Timestamp 对象的精度为二者之一:

    • 19 ,其为 yyyy-mm-dd hh:mm:ss 格式下的字符数
    • 20 + s ,其为 yyyy-mm-dd hh:mm:ss.[fff...] 格式下的字符数,s 表示给定 Timestamp 的标度(其小数秒精度)。

    注:此类型由 java.util.Date 和单独的毫微秒值组成。只有整数秒才会存储在 java.util.Date 组件中。小数秒(毫微秒)是独立存在的。传递不是 java.sql.Timestamp 实例的对象时,Timestamp.equals(Object) 方法永远不会返回 true,因为日期的毫微秒组件是未知的。因此,相对于 java.util.Date.equals(Object) 方法而言,Timestamp.equals(Object) 方法是不对称的。此外,hashcode 方法使用底层 java.util.Date 实现并因此在其计算中不包括毫微秒。

    鉴于 Timestamp 类和上述 java.util.Date 类之间的不同,建议代码一般不要将 Timestamp 值视为 java.util.Date 的实例。Timestampjava.util.Date 之间的继承关系实际上指的是实现继承,而不是类型继承。

    java.text.SimpleDateFormat

    SimpleDateFormat format = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss");
    
    String dateString = format.format(new Date());
    
    Date date =  format.parse("2017-07-05 22:56:55");

    相互转化

    Date<-------------------------->Calendar

    Date date = Calendar.getTime();
    
    Calendar calendar =Calendar.getInstance();
    
    calendar.setTime(new Date());

    取日期的部分 

    int year =calendar.get(Calendar.YEAR);   
    int month=calendar.get(Calendar.MONTH)+1;   
    int day =calendar.get(Calendar.DAY_OF_MONTH);//月份获取的时候要加1  
    int hour =calendar.get(Calendar.HOUR_OF_DAY); 
    int minute =calendar.get(Calendar.MINUTE);
    int second =calendar.get(Calendar.SECOND);

    从当前的时间减去 5天

    calendar.add(Calendar.DAY_OF_MONTH,-5);

    还有apach的common-lang包处理

    http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html

  • 相关阅读:
    07-图5 Saving James Bond
    07-图4 哈利·波特的考试(25 分)多源最短路,邻接矩阵
    最短路径问题
    最小生成树
    06-图3 六度空间(30 分)
    06-图2 Saving James Bond
    06-图1 列出连通集(25 分)邻接矩阵

    05-树9 Huffman Codes(30 分)
    集合及运算
  • 原文地址:https://www.cnblogs.com/alway-july/p/7115539.html
Copyright © 2011-2022 走看看