[TOC]

一. Date

    Data类的方法里面定义了如下几个重要方法:

  • 无参构造: public Data();
  • 有参构造: public Data(long data),接受long型数据;
  • 转换为long型: public long getTime();
1
2
3
4
5
6
7
8
9
10
package cn.ngp.demo;
import java.util.Date;
public class TestDemo {
public static void main(String[] args) {
long time = System.currentTimeMillis();//取得当前的日期时间以long型返回
Date date = new Date(time);
System.out.println(date);//输出对象信息
System.out.println(date.getTime());//输出对象信息
}
}

    以后的代码编写过程中,依然需要以上的转换操作,尤其是getTime()方法

二. 日期格式化: SimpleDataFormat(核心)

    java.text是一个专门实现国际化程序的开发包,而SimpleDataFormat是一个专门处理格式化日期的工具类,即: 可以将Date型的对象转化为String的形式显示。而主要使用的是以下方法:

  • 构造方法: public SimpleDateFormat(String pattern),需要传递转换格式
  • 将Data转换为String: public final String format(Data data);
  • 将String转换为Date: public Date parse(String source) throws ParseException;

    现在的关键就在于转换格式上,对于常见的转换格式: 年(yyyy)、月(MM)、日(dd)、时(HH)、分(mm)、秒(ss)、毫秒(SSS)。

范例:

1
2
3
4
5
6
7
8
9
10
11
package cn.ngp.demo;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String str = sdf.format(date); //将Date型变为String型
System.out.println(str);
}
}

    除了可以将日期变为字符串之外,也可以将字符串转换为日期。

1
2
3
4
5
6
7
8
9
10
11
12
13
package cn.ngp.demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDemo {
public static void main(String[] args) throws Exception {
String str = "2001-11-11 11:11:11.111";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = sdf.parse(str); //将字符串变为日期型数据
System.out.println(date);

}
}

    在将字符串变为日期型数据的时候,如果日期型数据给的月不对,那么会自动进行进位。如果给定的字符串与要转换的格式不符合,那么机会出现异常。

总结:关于数据类型的转换
    在数据表的操作里面重点说过了有几个常用类型:VARCHAR2(String)、CLOB(String)、Number(Double、int)、Date(java.util.Date)。

  • Date与String类之间的转换依靠的是SimpleDateFormat;
  • String与基本数据类型之间的转换依靠的是包装类与String.valueOf()方法;
  • long与Date转换依靠的是Date类提供的构造以及getTime()方法。

三. Calender

    Date类和SimpleDate类两个往往是一起使用的,但是Calendar这个类主要是进行一些简单的日期计算的。
Calendar类定义:

1
2
3
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>

    这是一个抽象类。那么应该依靠子类进行对象的实例化操作。但是在这个类里面它提供有一个static方法,此方法返回的正是本类对象: public static Calendar getInstance()。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package cn.ngp.demo;
import java.util.Calendar;
public class TestDemo {
public static void main(String[] args) throws Exception {
Calendar cal = Calendar.getInstance(); //取得本类对象
StringBuffer buf= new StringBuffer();
buf.append(cal.get(Calendar.YEAR)).append("-");
buf.append(cal.get(Calendar.MONTH) + 1).append("-");
buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" ");
buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
buf.append(cal.get(Calendar.SECOND));
System.out.println(buf);
}
}

     如果是日期计算,要比Date容易,如果使用Date要进行天的计算,那么就需要使用long完成了。

总结:

  1. 以后数据库中的日期类型就使用 java.util.Date表示;
  2. 代码模型: SimpleDateFormat 类实现String与Date间的相互转换。

参考

来自: 阿里云大学(笔记) → 零基础学Java10系列三:Java高级编程