日期操作


日期的简单操作:获得日期、日期设置、日期计算
Java 中没有一个类,可以直接完成日期操作
要想实现 Java 中的日期操作,必须有以下三个类共同搭配使用,才能实现
java.util.Date 日期类:获得当前系统时间
java.text.simpleDateFormat日期格式转换类,可以实现日期格式的想换转换
java.util.Calendar 日历类,格里高利历实现日期设置

java.util.Date

1、通过构造获得当前系统时间
此时间表现方式为西方时间格式

Date nowDate=new Date();
System.out.println(nowDate);//当前时间
long getTime()

返回从1970年元月1日零时零分零秒至今的毫秒值
与 System,currentTimeMillis();相同

void setTime(long times)

返回给定毫秒值对应的日期时间
用于设置给定毫秒值对应的时期时间;

long times2=100000000000000000L;
nowDate.setTime(times); 返回给 nowDate

此方法不好,可以用有参构造
Date futureDate=new Date(times2)

java.text.simpleDateFormat

由于new Date()获得当前系统时间,为西方表示方式,对于中国人来说,不死十分友好,素有我们需要将西方表示方式转换成中国人比较习惯的表现方式

中国人习惯的方式:
2016年10月13日 15时07分38秒
2016-10-13 15:07:38
y: 年
M: 月
d :月份中的天数
H: 24小时制
h :12小时制
m:分
s: 秒
2016年10月13日 15时07分38秒
yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒

SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒")
通过制定日期格式转换对象将 new Date()系统时间转换为指定日期格式的表现形式

Date date=new Date();
Date→String
String nowDate=sdf.format(date);
parse

将中方的时间转换为西方的时间
String→Date 将字符串时间转为 Date
此方法可能抛出异常
情形1:如果格式没有问题,字符串时间输入没有问题,则不会抛出异常
情形2:如果格式有问题,或者字符串时间输入对不上号则会抛出异常

String dateStr="2008年08月08日 20时08分08秒"
SimpleDateFormat sdf=new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒")
Date parse(String dateStr);//中方字符串时间格式化,将字符串时间通过指定格式转换为 date 类型时间
Date date=sdf2.parase(dateStr)

java.util.Calendar

创建对象,由于 Calendar 是一个抽象类,可以通过父类引用指向子类 GregorianCalendar对象方式实现实例化//不常用

Calendar cal=new GregorianCalendar()//不常用
可以通过工厂方法模式
Calendar cal2=Calendar.getInstance();
Date getTime()

从日历中获得当前系统时间,与 new Date()直接获得当前系统时间等效

void setTime()

给日历指定的日期时间

Date date2=new new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时mm 分 ss 秒").parse("2008年08月08日20时08分08秒")

①、Date getTime()
* Calendar → Date
* 从日历中获得当前系统时间。
* 与new Date()直接获得当前系统时间等效。
*/
Date date = new Date();
System.out.println("new Date:"+date);

    Date dateFromCal = cal.getTime();
    System.out.println("dateFromCal:"+dateFromCal);
    
    /*
     * ②、void setTime()
     *      Date → Calendar 
     *      给日历设置指定的日期时间。
     */
    Date date2 = 
        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
            .parse("2008-08-08 20:08:08");
    //将日历设置时间为date2
    cal.setTime(date2);
    System.out.println("setTime之后的日历时间:"+cal.getTime());
    
    /*
long getTimeInMillis()

long times=cal.getTimeInMillis()
####### setTimeInMillis

![时间转换](http://upload-images.jianshu.io/upload_images/66256-42884bcfddcf17e7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


####### 时间分量函数
时间分量:
YEAR  年  
MONTH 月
DATE  日
DAY_OF_MONTH
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时)
MINUTE 分
SECOND 秒
DAY_OF_WEEK(周日为一周的开始)

calendar cal=Calendar.getInstance();
System.out.println(年:cal.get(calendar.YEAR));//2016
System.out.println(年:cal.get(calendar.MONTH));//9表示10月,0 表示1

######cal.set(Calendar.YEAR,2017)
其他设置类似
设置日历为日历时间所在周的周几
  • void add(时间分量,值)
    */
    cal.add(Calendar.DATE, -3);//三天前
    System.out.println("三天前的时间:"+cal.getTime());

      cal.add(Calendar.MINUTE, 10);//10分钟后
      System.out.println("10分钟的时间:"+cal.getTime());
      
      cal.add(Calendar.MONTH, 4);//4个月后
      System.out.println("4个月后的时间:"+cal.getTime());
    





######时间分量的运算
时间计算:如明天此时10分钟后等我,四个月后结束
###### void add(时间分量,值)
cal.add(Calendar.DATE,-3)

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