导语
最重要的就是使用SimpleDateFormat类进行日期格式的转换。
主要内容
- Date类的使用
- SimpleDateFormat类的使用
- Calendar类的使用
具体内容
Date类
在之前一直在编写简单Java类,但是所编写的数据表与简单Java类的转换里面缺少了Date数据类型,所以本部分就属于简单Java类的最后的拼版。
在Java里面提供有一个java.util.Date的类,它直接就表示当前的日期时间。
范例:取得当前的日期时间
import java.util.Date;
public class TestDemo {
public static void main(String args[]) {
Date date = new Date();
System.out.println(date); // 输出对象信息
}
}
输出结果
Sat Sep 30 22:26:23 CST 2017
这个时候的确输出了当前的日期时间,只不过这个格式实在是难看。
一直以来强调过一个概念:long可以描述出日期时间数据,那么这一点在Date类的方法上也是可以看见的,在Date类里面定义了如下的几个重要方法:
- 无参构造:public Date()。
- 有参构造:public Date(long date)。
- 转换为long型:public long getTime()。
范例:Date与long之间转换
public class TestDemo {
public static void main(String args[]) {
long cur = System.currentTimeMillis();
Date date = new Date(cur);
System.out.println(date);
System.out.println(date.getTime());
}
}
输出结果
Sat Sep 30 22:36:23 CST 2017
1506782205
以后的代码编写过程之中,依然需要以上的转换操作,尤其是getTime()方法。
日期格式化:SimpleDateFormat
java.text是一个专门实现国际化程序的开发包,而SimpleDateFormat是一个专门处理格式化日期的工具类,可以将Date型的对象转换为String型的形式显示。而主要使用的是以下方法:
- 构造方法:public SimpleDateFormat(String pattem),需要传递转换格式。
- 将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型数据)
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);
}
}
输出结果
2017-09-30 22:50:29.312
除了可以将日期变为字符串之外,也可以将字符串转换为日期。
范例:将字符串转换为日期
public class TestDemo {
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);
}
}
输出结果
Fri Nov 11 11:11:11 CST 2011
在将字符串变为日期型数据的时候,如果日期型数据给出的月不对,那么会自动进行进位。如果给定的字符串与要转换的格式不符合,那么就会出现异常。
Calendar类
Date类和SimpleDate类两个往往是一起使用的,但是Calendar这个类主要是进行一些简单的日期计算的。
Calender类定义:
public abstract class Calendar
extends Object
implements Serializable, Cloneable, Comparable
这是一个抽象类,那么应该依靠子类进行对象的实例化操作。但是在这个类里面它提供有一个static方法,此方法返回的正是本类对象:public static Calendar getInstance()。
范例:取得当前日期时间
import java.util.Calendar;
public class TestDemo {
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);
}
}
输出结果
2017-9-30 23:9:4
但是这个类在取得的时候可以进行一些简单的计算,例如:若干天后的日期,三天后的日期。
修改代码
import java.util.Calendar;
public class TestDemo {
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) + 3).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);
}
}
输出结果
2017-10-3 23:12:8
如果是日期计算,要比Date容易,如果使用Date要进行天的计算,那么就需要使用long完成了。
总结
- 以后数据库中的日期型就使用java.uitl.Date表示。
- 代码模型:SimpleDateFormat类实现String与Date间的互相转换。
更多内容戳这里(整理好的各种文集)