09-日期处理

  1. Date 类的使用;
  2. Calendar 类的使用;
  3. SimpleDateFormat 类的使用;

Date

java 里面有个 java.util.Date,直接表示当前时间。

import java.util.Date;

class Main {
    public static void main(String [] args){
        Date date = new Date();
        System.out.println(date);
    }
}

out:
Wed Jul 31 09:45:17 CST 2019

Process finished with exit code 0

Date 的构造方法:

  • 无参构造:public Date();
  • 有参构造:public Date(long date),接受 long 型数据;
  • 转换为 long 型:public long getTime()

Date 与 long 的转换。

import java.util.Date;

class Main {
    public static void main(String [] args){
        long cur = System.currentTimeMillis();
        Date date = new Date(cur);
        System.out.println(date);
        System.out.println(cur);
        System.out.println(date.getTime());
    }
}

out:
Wed Jul 31 10:15:43 CST 2019
1564539343189
1564539343189

getTime 方法是一个重要的方法!

日期格式化:SimpleDateFormat(核心)

java.text 是一个专门处理格式的国际化的包。

SimpleDateFormat 是里面一个处理日期的,将日期转换为 String 型的形式显示。

主要使用以下方法:

  • 构造函数:public SimpleDateFormat(String pattern),需要传入转换格式;
  • 将 Date 转换为 String:public final String format(Date date);
  • 将 String 转换为 Date:public Date parse(String source) throws ParseException;

关键在于转换格式上:

名称格式
yyyy
MM
dd
HH
mm
ss
毫秒SSS

范例:将日期格式化显示

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

class Main {
    public static void main(String [] args){
        long cur = System.currentTimeMillis();
        Date date = new Date(cur);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        String str = sdf.format(date);
        System.out.println(str);
    }
}

out:
2019-07-31 10:27:30.681

范例:字符串转日期

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

class Main {
    public static void main(String [] args) throws ParseException {
        String str = "2019-07-31 10:27:30.681";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date date = sdf.parse(str);
        System.out.println(date);
    }
}

out:
Wed Jul 31 10:27:30 CST 2019

注意:

如果输入了不存在的字符串,那么我们认为是错误的,

但是程序会自动给我们进位。并不会抛异常。

如果给定的字符串和转换格式不符合,就会抛出异常。

总结:

在数据库的操作中,有几个常用类型:VARCHAR2(String)、CLOB(String)、NUMBER(int、double)、Date(java.util.Date)

  • date 与 string 类转换依靠的是 SimpleDateFormat
  • string 与基本类型转换依靠的是包装类和 String.valueOf()方法
  • long 与 Date 转换依靠的是 Date 类提供的构造以及 getTIme()方法

Calendar 类

Date 类和 Simpledate 类是一起使用的,

Calendar 类主要是进行一些日期计算的。

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>

这是一个抽象类,依靠子类进行对象的实例化操作。但是这个类提供一个静态方法,getInstance()返回本类对象。

范例:取得当前日期时间

import java.util.Calendar;

class Main {
    public static void main(String [] args){
        Calendar cal = Calendar.getInstance();
        StringBuffer buf = new StringBuffer();
        buf.append(cal.get(Calendar.YEAR)).append("-");
        buf.append(cal.get(Calendar.MONTH) + 1).append("-");  //月是从0开始
        buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" ");
        buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
        buf.append(cal.get(Calendar.MINUTE)).append(":");
        buf.append(cal.get(Calendar.SECOND));
        System.out.println(buf);
    }
}

out:
2019-7-31 10:48:18

如果是日期计算,这个是相当简单的,直接进行操作就行了。