Date类
之前一直在编写简单Java类,但是所编写的数据表与简单Java类的转换里面缺少了Date数据类型,所以本部分就属于简单Java类的最后一块内容。
在Java里面提供有一个java.util.Date的类,它直接就表示当前的日期时间。
范例: 取得当前的日期时间
package com.alpha;
import java.util.Date;
public class MainClass{
public static void main(String[] args) throws Exception {
Date date = new Date();
System.out.println(date);
}
}
这个时候的确是输出了当前的日期时间,只不过格式不是我们所习惯的类型(Sat Oct 21 15:57:32 CST 2017)。
一直以来强调过一个概念:long可以描述日期时间数据,那么这一点在Date类的方法上也是可以看见的,在Date类里面定义了如下的几个重要方法:
有参构造:public Date(long date);
转换为long型:public long getTime()。
范例: Date与long间的转换
package com.alpha;
import java.util.Date;
public class MainClass{
public static void main(String[] args) throws Exception {
long cur = System.currentTimeMillis(); // 取得当前的日期时间 以long返回
Date date = new Date(cur);
System.out.println(date);
System.out.println(date.getTime());
}
}
以后的代码编写过程中,依然需要以上的转换操作,尤其是getTime()方法。
日期格式化
java.text是一个专门实现国际化程序的开发包,而SimpleDateFormat是一个专门处理格式化日期的工具类,即:可以将Date型的对象转化为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)。
范例: 将日期格式化(Date型数据变为了String型数据)
package com.alpha;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainClass{
public static void main(String[] args) throws Exception {
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);
}
}
除了可以将日期变为字符串之外,也可以将字符串转换为日期。
范例: 将字符串转换为日期
package com.alpha;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MainClass{
public static void main(String[] args) throws Exception {
String str = "2011-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()方法。
Calendar类
Date类和SimpleDateFormat类两个往往是一起使用的,但是Calendar这个类主要是进行一些简单的日期计算。
Calendar类定义:
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable<Calendar>
这是一个抽象类,那么应该依靠子类进行对象的实例化操作,但是在这个类里面他提供有一个static方法,此方法返回的正式本类对象:public static Calendar getInstance()。
范例: 取得当前的日期时间
package com.alpha;
import java.util.Calendar;
public class MainClass{
public static void main(String[] args) throws Exception {
Calendar cale = Calendar.getInstance();
StringBuffer sb = new StringBuffer();
sb.append(cale.get(Calendar.YEAR)).append("-");
sb.append(cale.get(Calendar.MONTH) + 1).append("-");
sb.append(cale.get(Calendar.DAY_OF_MONTH)).append(" ");
sb.append(cale.get(Calendar.HOUR_OF_DAY)).append(":");
sb.append(cale.get(Calendar.MINUTE)).append(":");
sb.append(cale.get(Calendar.SECOND));
System.out.println(sb);
}
}
这个类在取得信息的时候可以进行一些简单的计算,例如:若干天之后的日期;
package com.alpha;
import java.util.Calendar;
public class MainClass{
public static void main(String[] args) throws Exception {
Calendar cale = Calendar.getInstance();
StringBuffer sb = new StringBuffer();
sb.append(cale.get(Calendar.YEAR)).append("-");
sb.append(cale.get(Calendar.MONTH) + 1).append("-");
sb.append(cale.get(Calendar.DAY_OF_MONTH) + 3).append(" ");
sb.append(cale.get(Calendar.HOUR_OF_DAY)).append(":");
sb.append(cale.get(Calendar.MINUTE)).append(":");
sb.append(cale.get(Calendar.SECOND));
System.out.println(sb);
}
}
总结
数据库中的日期型使用java.util.Date表示;
SimpleDateFormat类实现String与Date件的互相转换。