我们将讨论下面的类:
1、具体类(和抽象类相对)java.util.Date
2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat
3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar
具体类可以被实例化, 但是抽象类(abstract)却不能. 你首先必须实现抽象类的一个具体子类.
一.Date类的使用
首先,看一个实例:
import java.util.Date;
public class Data{
public static void main(String[] args) {
Date date = new Date();//实例化一个date,获得系统日期
System.out.println(date.getTime());//输出当到时间
}
}
我们可以看到输出是一串数字,在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和分析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。
package com.hanchao.test; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Random; /** * 来测试一下此类:GregorianCalendar * @author hanlw */ public class Test { public static void main(String[] args) { /***************************************** * 通过GregorianCalendar可以获取年月日时分秒的各自的值 */ GregorianCalendar cal = new GregorianCalendar(); int curYear = cal.get(Calendar.YEAR); int curMonth = cal.get(Calendar.MONTH)+1; int curDate = cal.get(Calendar.DATE); int curHour = cal.get(Calendar.HOUR_OF_DAY); int curMinute = cal.get(Calendar.MINUTE); System.out.println(curYear + "年\t" + curMonth + "月\t" + curDate +"日\t" + curHour + "时\t" + curMinute + "分\n"); /********************************************** * Date的方法用的比较少了!用的比较少了! */ Date date = new Date(); System.out.println("系统当前的时间:"+date.getTime() + "\n"); /************************************************ * 常用到的。 注意大小写的区别啊!! */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" + "\n"); System.out.println("今天的日期为:\t"+sdf.format(date)); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM" + "\n"); System.out.println("输出年月:\t" +sdf2.format(date)); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH"); System.out.println("某年月某日某时:\t" +sdf3.format(date) + "\n"); SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); System.out.println("某年某月某日某时某分:\t" + sdf4.format(date) +"\n"); SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("某年某月某日某时某分某秒:\t" + sdf5.format(date)); SimpleDateFormat sdf6 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:ms"); System.out.println("某年某月某日某时某分某秒某毫秒:\t" + sdf6.format(date)+"\n"); /** 看看电子商务网站的订单的生成吧。*/ System.out.println("您的订单号:\t" +getNow() + "\n"); } /** * 该方法常用来生成订单 * @return */ public static String getNow() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssms");//时间格式 //是随机数的生成(保证那一秒钟订单的不重复,如果您的业务量非常大时,我们可以把下面的1000改成10000000......) Random random = new Random(); int index = random.nextInt(1000); return sdf.format(new Date())+index;//返回当前时间对应的字符串+一个1000以内随机 } }