java中和时间日期相关的类System,Date,SimpleDateFormat,DateFormat,Calender类的常用方法以及联系(转换)

    java中和时间日期相关的类有不少,之前系统的学习过,但是由于不经常用容易忘记,今天决定带着源码,用相对容易理解的表达,梳理一遍.

 System类

    此类中的currentTimeMillis方法和时间有关,此方法返回的是系统的当前时间相对于1970-1-1 00:00:00(协调世界时)的毫秒值,返回是数据类型是long,具体的看下面的代码:


Date类

    类Date表示特定的瞬间,精确到毫秒。此类中的方法有很多,不过有很多都是过时的方法,所有常用的方法不多.
无参构造Date()
    
创建Date对象并初始化此对象,以表示创建它的系统时间(精确到毫秒)。这个方法底层就是调用的的System.currentTimeMillis方法

有参构造Date(long date)

    分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。说白了就是用一个毫秒值,创建一个相对于1970年1月1日 00:00:00(GMT)的Date对象
方法String toLocaleString()
 
  由于Date类 重写的toString方法对于中国人来说看着不习惯,所以我们在输出Date对象的时候一般使用此方法.

方法void setTiem()
    设置此Date对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后time毫秒的时间点。

    不管date对象之前是表示的什么时间,最后会以最后一次操作为准.这里设置的毫秒值为0,打印出来却是1970-1-1 8:00:00,是因为时区的问题.

    如果设置为负数,就是相对于1970 年 1 月 1 日 00:00:00 GMT 这个时间之前.
方法 long getTime()
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

    

DateFormatSimpleDateFormat
    SimpleDateFormat
是继承的DataFormat,他们是java.text包下的类(text包下的大部分类都是用于格式化),DateFormat是一个抽象类,所以我们在使用它的非静态方法的时候一般是使用它的子类对象,也就是SimpleDateFormat类的对象,他们的作用就是格式化和解析日期的具体类.常用的方法有两个,都是非静态的.
方法public String format(Date date)
   
作用:将一个 Date 格式化为日期/时间字符串,其实从上面的例子可以发现,即使使用了Date类过时的toLocalString方法有很多时候也还是不能满足我们的需要,所以就有了format方法,他可以自定义自己的想要的格式来输出Date对象,输出字符串的形式取决于构造SimpleDateFormat对象的时候指定的格式.当然我们在API中也可以看到:

例子:
这个构造方法里面的yyyy-MM-dd 其实可以这样记忆"4个小姨,两个大妹妹和一个小弟弟"
方法public Date parse(String string)
    这里psrse就是解析的意思,方法作用是从给定字符串的开始解析文本,以生成一个日期对象。当然这个格式还是要和构造SimpleDateFormat对象的时候一致.
例子:
Calendar
   
calendar是日历的意思,为操作年月日时提供一些方法.在对日期做加减时或者灵活的获取日期中的某个字段用此类比较合适.他是一个抽象类,有个getInstance方法类获得一个对象.这个类里面还有很多见名知意的属性:

这些属性都是 static final修饰的,每个字段都有具体的常量值,常用的方法有:
方法 int get(int field)
    返回指定日历字段(field)的值.
例子:获得当前年份的值:

获取到当前月份值:

这里需要说明一下,我写这个的时候其实是5月,打印出来的却是4月,是因为1月是值其实是0,这个用到的时候需要注意下.
方法 void set(int field, int value)
    作用:给给定的日历字段(field)赋值
    例子:设置年份的值
    
方法 add(int field, int value)
   
作用:根据日历的规则,为给定的日历字段添加或减去指定的时间量。
    
方法Date getTime()
    返回一个方法调用对象(Calendar对象)的时间值的Date对象,这个方法能够完成CalendarDate的转换
    


    

猜你喜欢

转载自blog.csdn.net/iteen/article/details/80453544